zenity/internal/zenutil/osa_generator.go
2020-01-19 12:53:20 +00:00

80 lines
1.3 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(`"}}<script>`)
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("</script>{{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 "html/template"
var scripts = template.Must(template.New("").Parse(` + "`{{.}}`" + `))
`))