lang: Initial implementation of the mgmt language

This is an initial implementation of the mgmt language. It is a
declarative (immutable) functional, reactive, domain specific
programming language. It is intended to be a language that is:

* safe
* powerful
* easy to reason about

With these properties, we hope this language, and the mgmt engine will
allow you to model the real-time systems that you'd like to automate.

This also includes a number of other associated changes. Sorry for the
large size of this patch.
This commit is contained in:
James Shubin
2018-01-20 08:09:29 -05:00
parent 1c8c0b2915
commit b19583e7d3
237 changed files with 25256 additions and 743 deletions

View File

@@ -27,6 +27,18 @@ import (
"github.com/godbus/dbus"
)
// NumToAlpha returns a lower case string of letters representing a number. If
// you specify 0, you'll get `a`, 25 gives you `z`, and 26 gives you `aa` and so
// on...
func NumToAlpha(idx int) string {
var mod = idx % 26
var div = idx / 26
if div > 0 {
return NumToAlpha(div-1) + string(rune(mod+int('a')))
}
return string(rune(mod + int('a')))
}
// FirstToUpper returns the string with the first character capitalized.
func FirstToUpper(str string) string {
if str == "" {