package main import ( "fmt" "io/ioutil" "os" "path/filepath" "runtime" "strings" "text/template" "github.com/xor-gate/debpkg" "src.dualinventive.com/go/common/version/version" ) func miscDir() string { _, file, _, _ := runtime.Caller(0) return filepath.Dir(filepath.Dir(file)) + "/misc" } func processTemplate(t *template.Template, name string, vars interface{}) (string, error) { f, err := ioutil.TempFile("", name) if err != nil { return "", err } defer f.Close() if err := t.ExecuteTemplate(f, name, vars); err != nil { return "", err } return f.Name(), nil } func main() { t, err := template.New("tex").Delims("@", "@").Option("missingkey=error").ParseGlob(miscDir() + "/*.in") if err != nil { panic(err) } deb := debpkg.New() if err := deb.Config("package.yml"); err != nil { panic(fmt.Errorf("Error while loading config file: %v", err)) } deb.SetName(os.Getenv("PROJECT_NAME")) deb.SetVersion(version.GetVersion()) vars := map[string]interface{}{ "PROJECT_APP_NAME": os.Getenv("PROJECT_NAME"), "CPACK_PROJECT_APP_NAME": strings.TrimLeft(os.Getenv("PROJECT_NAME"), "di-"), "CPACK_DEBIAN_INSTALL_POSTINST_EXTRA": "", } file, err := processTemplate(t, "prerm.in", vars) if err != nil { panic(err) } deb.AddControlExtra("prerm", file) file, err = processTemplate(t, "postinst.in", vars) if err != nil { panic(err) } deb.AddControlExtra("postinst", file) file, err = processTemplate(t, "postrm.in", vars) if err != nil { panic(err) } deb.AddControlExtra("postrm", file) if err := deb.Write(""); err != nil { fmt.Println("debpkg: error:", err) return } }