summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--argv.go1
-rw-r--r--build.go100
-rw-r--r--control.read.go (renamed from readControlFile.go)0
-rw-r--r--control.write.go106
-rw-r--r--main.go7
6 files changed, 117 insertions, 99 deletions
diff --git a/Makefile b/Makefile
index 1e8ecd6..266aebb 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@ build: goimports vet
GO111MODULE="off" go build -v \
-ldflags "-X main.VERSION=${VERSION} -X main.DATE=${DATE} -X gui.GUIVERSION=${VERSION}"
-install:
+install: goimports
GO111MODULE="off" go install -v \
-ldflags "-X main.VERSION=${VERSION} -X main.DATE=${DATE} -X gui.GUIVERSION=${VERSION}"
diff --git a/argv.go b/argv.go
index ef20d8e..d951886 100644
--- a/argv.go
+++ b/argv.go
@@ -15,6 +15,7 @@ type args struct {
Commit *EmptyCmd `arg:"subcommand:commit" help:"'git commit' but errors out if on wrong branch"`
Show *EmptyCmd `arg:"subcommand:show" help:"show what would be done"`
Gui *EmptyCmd `arg:"subcommand:gui" help:"open the gui"`
+ Dump *EmptyCmd `arg:"subcommand:dump" help:"dump out the future control file"`
Ldflags []string `arg:"--ldflags" help:"flags to pass to go build"`
OutDir string `arg:"--dir" help:"write .deb file into this directory"`
Release bool `arg:"--release" help:"build a release from the last git tag"`
diff --git a/build.go b/build.go
index 1fd1258..5030586 100644
--- a/build.go
+++ b/build.go
@@ -5,11 +5,8 @@ import (
"fmt"
"os"
"path/filepath"
- "strconv"
- "strings"
"time"
- "github.com/go-cmd/cmd"
"go.wit.com/lib/gui/shell"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
@@ -167,14 +164,14 @@ func buildPackage(repo *gitpb.Repo) (bool, error) {
// probably deprecate this
log.Info("REPO GO_DEB_CUSTOM=true means binary is not copied")
} else {
- fname := repo.Control["Package"]
+ _, fname := filepath.Split(repo.GetFullPath())
cmd := []string{"cp", fname, "files/usr/bin"}
log.Info("REPO FILENAME cp", cmd)
if err := repo.RunVerbose(cmd); err != nil {
log.Warn("cp failed")
return false, err
}
- cmd = []string{"strip", "files/usr/bin/" + filename}
+ cmd = []string{"strip", "files/usr/bin/" + fname}
if err := repo.RunVerbose(cmd); err != nil {
log.Warn("strip failed")
return false, err
@@ -245,96 +242,3 @@ func buildPackage(repo *gitpb.Repo) (bool, error) {
}
return true, nil
}
-
-func writeDebianControlFile(repo *gitpb.Repo) bool {
- filename := "files/DEBIAN/control"
- cf, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
- if err != nil {
- log.Info("open control file failed", err)
- return false
- }
- fmt.Fprintln(cf, "Package:", repo.Control["Package"]) // c.Package.String())
- fmt.Fprintln(cf, "Source:", repo.Control["Source"]) // c.Source.String())
- fmt.Fprintln(cf, "Version:", repo.Control["Version"])
- if repo.Control["Architecture"] == "" {
- repo.Control["Architecture"] = "amd64"
- }
- fmt.Fprintln(cf, "Architecture:", repo.Control["Architecture"]) // c.Architecture.String())
-
- writeControlVar(cf, repo, "Depends")
- writeControlVar(cf, repo, "Build-Depends")
- writeControlVar(cf, repo, "Maintainer")
- writeControlVar(cf, repo, "Packager")
- writeControlVar(cf, repo, "GoPath")
- writeControlVar(cf, repo, "URL")
- writeControlVar(cf, repo, "Conflicts")
-
- stamp := time.Now().UTC().Format("2006/01/02 15:04:05 UTC")
- // update to now now despite what the GUI is showing
- fmt.Fprintln(cf, "Package-Build-Date:", stamp)
- fmt.Fprintln(cf, "Git-Tag-Date:", "todo: get from repo")
-
- desc, _ := repo.Control["Description"] // c.Description.String()
- parts := strings.Split(desc, "\n")
- fmt.Fprintln(cf, "Description:", strings.Join(parts, "\n "))
-
- log.Info("file written as:", filename)
- return true
-}
-
-func writeControlVar(f *os.File, repo *gitpb.Repo, varname string) {
- val, _ := repo.Control[varname]
- if val == "" {
- return
- }
- fmt.Fprintln(f, varname+":", val)
-}
-
-// try to guess or figure out the config file values
-// if there is not a control file
-func computeControlValues(repo *gitpb.Repo) bool {
- if repo.Control["Package"] == "" {
- // get the package name from the repo name
- path := repo.Control["pathL"] // c.pathL.String()
- parts := strings.Split(path, "/")
- name := parts[len(parts)-1]
- repo.Control["Package"] = name
- }
- if repo.Control["Source"] == "" {
- repo.Control["Source"] = repo.Control["Package"]
- }
- if repo.Control["Build-Depends"] == "" {
- repo.Control["Build-Depends"] = repo.Control["golang"]
- }
- if repo.Control["Recommends"] == "" {
- repo.Control["Recommends"] = repo.Control["go-gui-toolkits"]
- }
- if repo.Control["Maintainer"] == "" {
- repo.Control["Maintainer"] = "todo: get from ENV"
- }
- if repo.Control["Description"] == "" {
- repo.Control["Description"] = "todo: put URL here"
- }
- return true
-}
-
-// stamp := time.Now().UTC().Format("2006/01/02 15:04:05 UTC")
-
-func getDateStamp(tag string) string {
- var r cmd.Status
- r = me.repo.Run([]string{"git", "log", "-1", "--format=%at", tag})
-
- out := strings.Join(r.Stdout, "\n")
- out = strings.TrimSpace(out)
-
- // Convert the string to an integer
- gitTagTimestampInt, err := strconv.ParseInt(out, 10, 64)
- if err != nil {
- fmt.Println("Error converting timestamp:", err)
- return "git tag " + tag + " unknown"
- }
-
- // Parse the Unix timestamp into a time.Time object
- gitTagDate := time.Unix(gitTagTimestampInt, 0)
- return gitTagDate.UTC().Format("2006-01-02_15:04:05_UTC") // close to RFC3339
-}
diff --git a/readControlFile.go b/control.read.go
index d6a4c0d..d6a4c0d 100644
--- a/readControlFile.go
+++ b/control.read.go
diff --git a/control.write.go b/control.write.go
new file mode 100644
index 0000000..b2c31ba
--- /dev/null
+++ b/control.write.go
@@ -0,0 +1,106 @@
+package main
+
+import (
+ "fmt"
+ "os"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/go-cmd/cmd"
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+func writeDebianControlFile(repo *gitpb.Repo) bool {
+ filename := "files/DEBIAN/control"
+ cf, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
+ if err != nil {
+ log.Info("open control file failed", err)
+ return false
+ }
+ fmt.Fprintln(cf, "Package:", repo.Control["Package"]) // c.Package.String())
+ fmt.Fprintln(cf, "Source:", repo.Control["Source"]) // c.Source.String())
+ fmt.Fprintln(cf, "Version:", repo.Control["Version"])
+ if repo.Control["Architecture"] == "" {
+ repo.Control["Architecture"] = "amd64"
+ }
+ fmt.Fprintln(cf, "Architecture:", repo.Control["Architecture"]) // c.Architecture.String())
+
+ writeControlVar(cf, repo, "Depends")
+ writeControlVar(cf, repo, "Build-Depends")
+ writeControlVar(cf, repo, "Maintainer")
+ writeControlVar(cf, repo, "Packager")
+ writeControlVar(cf, repo, "GoPath")
+ writeControlVar(cf, repo, "URL")
+ writeControlVar(cf, repo, "Conflicts")
+
+ stamp := time.Now().UTC().Format("2006/01/02 15:04:05 UTC")
+ // update to now now despite what the GUI is showing
+ fmt.Fprintln(cf, "Package-Build-Date:", stamp)
+ fmt.Fprintln(cf, "Git-Tag-Date:", "todo: get from repo")
+
+ desc, _ := repo.Control["Description"] // c.Description.String()
+ parts := strings.Split(desc, "\n")
+ fmt.Fprintln(cf, "Description:", strings.Join(parts, "\n "))
+
+ log.Info("file written as:", filename)
+ return true
+}
+
+func writeControlVar(f *os.File, repo *gitpb.Repo, varname string) {
+ val, _ := repo.Control[varname]
+ if val == "" {
+ return
+ }
+ fmt.Fprintln(f, varname+":", val)
+}
+
+// try to guess or figure out the config file values
+// if there is not a control file
+func computeControlValues(repo *gitpb.Repo) bool {
+ if repo.Control["Package"] == "" {
+ // get the package name from the repo name
+ path := repo.Control["pathL"] // c.pathL.String()
+ parts := strings.Split(path, "/")
+ name := parts[len(parts)-1]
+ repo.Control["Package"] = name
+ }
+ if repo.Control["Source"] == "" {
+ repo.Control["Source"] = repo.Control["Package"]
+ }
+ if repo.Control["Build-Depends"] == "" {
+ repo.Control["Build-Depends"] = repo.Control["golang"]
+ }
+ if repo.Control["Recommends"] == "" {
+ repo.Control["Recommends"] = repo.Control["go-gui-toolkits"]
+ }
+ if repo.Control["Maintainer"] == "" {
+ repo.Control["Maintainer"] = "todo: get from ENV"
+ }
+ if repo.Control["Description"] == "" {
+ repo.Control["Description"] = "todo: put URL here"
+ }
+ return true
+}
+
+// stamp := time.Now().UTC().Format("2006/01/02 15:04:05 UTC")
+
+func getDateStamp(tag string) string {
+ var r cmd.Status
+ r = me.repo.Run([]string{"git", "log", "-1", "--format=%at", tag})
+
+ out := strings.Join(r.Stdout, "\n")
+ out = strings.TrimSpace(out)
+
+ // Convert the string to an integer
+ gitTagTimestampInt, err := strconv.ParseInt(out, 10, 64)
+ if err != nil {
+ fmt.Println("Error converting timestamp:", err)
+ return "git tag " + tag + " unknown"
+ }
+
+ // Parse the Unix timestamp into a time.Time object
+ gitTagDate := time.Unix(gitTagTimestampInt, 0)
+ return gitTagDate.UTC().Format("2006-01-02_15:04:05_UTC") // close to RFC3339
+}
diff --git a/main.go b/main.go
index bb574ec..e705c6c 100644
--- a/main.go
+++ b/main.go
@@ -66,6 +66,13 @@ func main() {
}
computeControlValues(me.repo)
+ if argv.Dump != nil {
+ for v := range me.repo.Control {
+ log.Infof("CONTROL: %s: %s\n", v, me.repo.Control[v])
+ }
+ okExit("")
+ }
+
if argv.Gui != nil {
// only load teh toolkit if you get this far
me.myGui.Start() // loads the GUI toolkit