48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"tsrun/internal/buildblob"
|
|
)
|
|
|
|
func main() {
|
|
inPath := flag.String("in", "secrets/tsrun.manifest.json", "manifest path")
|
|
outPath := flag.String("out", "internal/embedded/blob_gen.go", "generated Go output path")
|
|
flag.Parse()
|
|
|
|
blob, err := buildblob.BuildFromFile(*inPath)
|
|
if err != nil {
|
|
fail(err)
|
|
}
|
|
|
|
encoded := base64.StdEncoding.EncodeToString(blob)
|
|
content := strings.Builder{}
|
|
content.WriteString("package embedded\n\n")
|
|
content.WriteString("import \"encoding/base64\"\n\n")
|
|
content.WriteString("func init() {\n")
|
|
content.WriteString(fmt.Sprintf("\tdata, err := base64.StdEncoding.DecodeString(%q)\n", encoded))
|
|
content.WriteString("\tif err != nil {\n")
|
|
content.WriteString("\t\tpanic(err)\n")
|
|
content.WriteString("\t}\n")
|
|
content.WriteString("\tBlob = data\n")
|
|
content.WriteString("}\n")
|
|
|
|
if err := os.MkdirAll(filepath.Dir(*outPath), 0o755); err != nil {
|
|
fail(err)
|
|
}
|
|
if err := os.WriteFile(*outPath, []byte(content.String()), 0o600); err != nil {
|
|
fail(err)
|
|
}
|
|
}
|
|
|
|
func fail(err error) {
|
|
fmt.Fprintln(os.Stderr, err)
|
|
os.Exit(1)
|
|
}
|