83 lines
1.4 KiB
Go
83 lines
1.4 KiB
Go
// +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(`" -}}` + "\n")
|
|
|
|
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(` + "`{{.}}`" + `))
|
|
`))
|