12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // +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)
- }
- }
|