76 lines
1.6 KiB
Go
76 lines
1.6 KiB
Go
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
|
|
}
|
|
}
|