summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/d5/tengo/stdlib/gensrcmods.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/d5/tengo/stdlib/gensrcmods.go')
-rw-r--r--vendor/github.com/d5/tengo/stdlib/gensrcmods.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/vendor/github.com/d5/tengo/stdlib/gensrcmods.go b/vendor/github.com/d5/tengo/stdlib/gensrcmods.go
new file mode 100644
index 00000000..fada66bd
--- /dev/null
+++ b/vendor/github.com/d5/tengo/stdlib/gensrcmods.go
@@ -0,0 +1,53 @@
+// +build ignore
+
+package main
+
+import (
+ "bytes"
+ "io/ioutil"
+ "log"
+ "regexp"
+ "strconv"
+)
+
+var tengoModFileRE = regexp.MustCompile(`^srcmod_(\w+).tengo$`)
+
+func main() {
+ modules := make(map[string]string)
+
+ // enumerate all Tengo module files
+ files, err := ioutil.ReadDir(".")
+ if err != nil {
+ log.Fatal(err)
+ }
+ for _, file := range files {
+ m := tengoModFileRE.FindStringSubmatch(file.Name())
+ if m != nil {
+ modName := m[1]
+
+ src, err := ioutil.ReadFile(file.Name())
+ if err != nil {
+ log.Fatalf("file '%s' read error: %s", file.Name(), err.Error())
+ }
+
+ modules[modName] = string(src)
+ }
+ }
+
+ var out bytes.Buffer
+ out.WriteString(`// Code generated using gensrcmods.go; DO NOT EDIT.
+
+package stdlib
+
+// SourceModules are source type standard library modules.
+var SourceModules = map[string]string{` + "\n")
+ for modName, modSrc := range modules {
+ out.WriteString("\t\"" + modName + "\": " + strconv.Quote(modSrc) + ",\n")
+ }
+ out.WriteString("}\n")
+
+ const target = "source_modules.go"
+ if err := ioutil.WriteFile(target, out.Bytes(), 0644); err != nil {
+ log.Fatal(err)
+ }
+}