// +build ignore package main import ( "bufio" "io/ioutil" "log" "os" "path/filepath" "strings" "text/template" ) func main() { dir := os.Args[1] files, err := ioutil.ReadDir(dir) if err != nil { log.Fatal(err) } var str strings.Builder for _, file := range files { name := file.Name() str.WriteString("\n" + `{{define "`) str.WriteString(strings.TrimSuffix(name, filepath.Ext(name))) str.WriteString(`" -}}`) func() { in, err := os.Open(filepath.Join(dir, name)) if err != nil { log.Fatal(err) } defer in.Close() scanner := bufio.NewScanner(in) for scanner.Scan() { line := strings.TrimSpace(scanner.Text()) if line != "" { str.WriteString(line) str.WriteRune('\n') } } if err := scanner.Err(); err != nil { log.Fatal(err) } }() str.WriteString("{{- end}}") } out, err := os.Create("osa_generated.go") if err != nil { log.Fatal(err) } err = generator.Execute(out, str.String()) if err != nil { log.Fatal(err) } err = out.Close() if err != nil { log.Fatal(err) } } var generator = template.Must(template.New("").Parse(`// Code generated by zenity; DO NOT EDIT. // +build darwin package zenutil import "encoding/json" import "text/template" var scripts = template.Must(template.New("").Funcs(template.FuncMap{"json": func(v interface{}) (string, error) { b, err := json.Marshal(v) return string(b), err }}).Parse(` + "`{{.}}`" + `)) `))