in vulndb/sqlutil/b64schema/main.go [30:94]
func main() {
flag.Usage = func() {
fmt.Printf("use: %s [flags] input.sql output.go\n", os.Args[0])
flag.PrintDefaults()
os.Exit(1)
}
pkg := flag.String("pkg", "schema", "set package name")
flag.Parse()
if len(flag.Args()) != 2 {
flag.Usage()
}
f, err := os.Open(flag.Arg(0))
if err != nil {
panic(err)
}
defer f.Close()
o, err := os.Create(flag.Arg(1))
if err != nil {
panic(err)
}
defer o.Close()
var b bytes.Buffer
var stmt []string
scanner := bufio.NewScanner(f)
for scanner.Scan() {
line := scanner.Text()
if b.Len() == 0 && line == "" {
continue
}
b.WriteString(line)
b.WriteString("\n")
if strings.HasSuffix(line, ";") {
s := base64.StdEncoding.EncodeToString(b.Bytes())
stmt = append(stmt, s)
b.Reset()
}
}
if len(stmt) == 0 {
panic("empty stmt")
}
t := gotype(f.Name())
decoderTemplate.Execute(o, struct {
Pkg string
Pub string
File string
}{
*pkg, t, f.Name(),
})
fmt.Fprintf(o, "// b64%s is auto-generated from %s.\n", t, f.Name())
fmt.Fprintf(o, "var b64%s = []string{", t)
fmt.Fprintf(o, "%q", stmt[0])
for i := 1; i < len(stmt); i++ {
fmt.Fprintf(o, ", %q", stmt[i])
}
fmt.Fprintf(o, "}\n")
}