summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.go83
-rw-r--r--doGui.go6
-rw-r--r--readControlFile.go17
-rw-r--r--update.go5
4 files changed, 67 insertions, 44 deletions
diff --git a/build.go b/build.go
index 0904c0b..becbcd4 100644
--- a/build.go
+++ b/build.go
@@ -32,16 +32,11 @@ func buildPackage(repo *gitpb.Repo) (bool, error) {
return false, errors.New("filename is blank")
}
- homeDir, err := os.UserHomeDir()
- if err != nil {
- return false, err
- }
-
arch := repo.Control["Architecture"] // c.Architecture.String()
if arch == "" {
arch = "amd64" // todo: detect what you are building on
}
- version := repo.GetCurrentVersion()
+ version := repo.Control["Version"]
log.Info("version is:", version)
debname := filename + "_" + version + "_" + arch + ".deb"
var fulldebname string
@@ -57,12 +52,19 @@ func buildPackage(repo *gitpb.Repo) (bool, error) {
}
var fullfilename string
- if argv.Release {
- fullfilename = filepath.Join(homeDir, "go/bin", filename)
- } else {
- fullfilename = filename
+ _, fullfilename = filepath.Split(filename)
+
+ if fullfilename == "" {
+ log.Info("fullfilename =", fullfilename)
+ badExit(log.Errorf("binary name was blank"))
+ }
+ if fullfilename == "." {
+ log.Info("fullfilename =", fullfilename)
+ badExit(log.Errorf("binary name was ."))
+ }
+ if shell.Exists(fullfilename) {
+ repo.RunVerbose([]string{"rm", "-f", fullfilename})
}
- shell.Run([]string{"rm", "-f", fullfilename})
if shell.Exists(fullfilename) {
// something wrong
@@ -117,7 +119,7 @@ func buildPackage(repo *gitpb.Repo) (bool, error) {
cmd = append(cmd, "-ldflags", "-X "+flag)
}
- _, err := shell.RunVerbose(cmd)
+ err := repo.RunVerbose(cmd)
if err != nil {
return false, fmt.Errorf("go build err %v", err)
}
@@ -139,15 +141,15 @@ func buildPackage(repo *gitpb.Repo) (bool, error) {
}
if shell.Exists("files") {
- shell.Run([]string{"rm", "-rf", "files"})
+ repo.RunVerbose([]string{"rm", "-rf", "files"})
// log.Info("running sync")
- shell.Run([]string{"sync"})
+ repo.RunVerbose([]string{"sync"})
if shell.Exists("files") {
log.Warn("rm failed for some reason")
return false, errors.New("rm files/")
}
}
- shell.Run([]string{"sync"}) // for some reason the next check fails sometimes?
+ repo.RunVerbose([]string{"sync"}) // for some reason the next check fails sometimes?
if shell.Exists("files") {
// probably the 'shell' package id being stupid and not waiting for the process to actually exit
log.Warn("rm failed. files/ still exists. is golang doing these in parallel?")
@@ -162,14 +164,20 @@ func buildPackage(repo *gitpb.Repo) (bool, error) {
}
if os.Getenv("GO_DEB_CUSTOM") == "true" {
// skip cp & strip on custom 'control' files
+ // probably deprecate this
+ log.Info("REPO GO_DEB_CUSTOM=true means binary is not copied")
} else {
- if r := shell.Run([]string{"cp", fullfilename, "files/usr/bin"}); r.Error != nil {
+ fname := repo.Control["Package"]
+ 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, r.Error
+ return false, err
}
- if r := shell.Run([]string{"strip", "files/usr/bin/" + filename}); r.Error != nil {
+ cmd = []string{"strip", "files/usr/bin/" + filename}
+ if err := repo.RunVerbose(cmd); err != nil {
log.Warn("strip failed")
- return false, r.Error
+ return false, err
}
}
@@ -188,8 +196,8 @@ func buildPackage(repo *gitpb.Repo) (bool, error) {
if err := os.MkdirAll(path, os.ModePerm); err != nil {
return false, errors.New("no files/usr/lib")
}
- if r := shell.Run([]string{"cp", readme, path}); r.Error != nil {
- return false, r.Error
+ if err := repo.RunVerbose([]string{"cp", readme, path}); err != nil {
+ return false, err
}
}
@@ -197,33 +205,38 @@ func buildPackage(repo *gitpb.Repo) (bool, error) {
return false, errors.New("write control file")
}
if shell.Exists("postinst") {
- shell.Run([]string{"cp", "postinst", "files/DEBIAN/"})
+ repo.RunVerbose([]string{"cp", "postinst", "files/DEBIAN/"})
}
// experiment for the toolkit package
// if the git repo has a "./build" script run it before packaging
// this way the user can put custom files in the .deb package
if shell.Exists("build") {
- shell.Run([]string{"./build"})
+ log.Info(repo.FullPath, "FOUND ./build HERE")
+ repo.RunVerbose([]string{"./build"})
+ } else {
+ log.Info(repo.FullPath, "NOT FOUND ./build HERE")
}
- shell.Run([]string{"dpkg-deb", "--build", "files", fulldebname})
+ cmd := []string{"dpkg-deb", "--build", "files", fulldebname}
+ result := repo.RunVerbose(cmd)
if shell.Exists(fulldebname) {
} else {
+ log.Warn("CMD FAILED", cmd, result)
log.Warn("build failed: full name was not created:", fulldebname)
return false, errors.New("dpkg-deb --build failed")
}
- shell.Run([]string{"dpkg-deb", "-I", fulldebname})
- shell.Run([]string{"dpkg-deb", "-c", fulldebname})
+ repo.RunVerbose([]string{"dpkg-deb", "-I", fulldebname})
+ repo.RunVerbose([]string{"dpkg-deb", "-c", fulldebname})
// cleanup files
if shell.Exists("files") {
if argv.KeepFiles {
log.Info("keeping the build files/")
} else {
- shell.Run([]string{"rm", "-rf", "files"})
+ repo.RunVerbose([]string{"rm", "-rf", "files"})
// log.Info("running sync")
- shell.Run([]string{"sync"})
+ repo.RunVerbose([]string{"sync"})
if shell.Exists("files") {
log.Warn("rm -rf files/ failed. Run() returned false")
return false, errors.New("rm files/")
@@ -240,9 +253,9 @@ func writeDebianControlFile(repo *gitpb.Repo) bool {
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"]) // c.Version.String())
+ 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"])
fmt.Fprintln(cf, "Architecture:", repo.Control["Architecture"]) // c.Architecture.String())
writeControlVar(cf, repo, "Depends")
@@ -271,7 +284,7 @@ func writeControlVar(f *os.File, repo *gitpb.Repo, varname string) {
if val == "" {
return
}
- fmt.Fprintln(f, val+":", val)
+ fmt.Fprintln(f, varname+":", val)
}
// try to guess or figure out the config file values
@@ -306,11 +319,7 @@ func computeControlValues(repo *gitpb.Repo) bool {
func getDateStamp(tag string) string {
var r cmd.Status
- if me.repo == nil {
- r = shell.Run([]string{"git", "log", "-1", "--format=%at", tag})
- } else {
- r = me.repo.Run([]string{"git", "log", "-1", "--format=%at", tag})
- }
+ r = me.repo.Run([]string{"git", "log", "-1", "--format=%at", tag})
out := strings.Join(r.Stdout, "\n")
out = strings.TrimSpace(out)
diff --git a/doGui.go b/doGui.go
index 6a34bee..8ad2076 100644
--- a/doGui.go
+++ b/doGui.go
@@ -39,10 +39,6 @@ func doGui() {
writeDebianControlFile(me.repo)
})
- group1.NewButton("update gui", func() {
- updateControl(cbox)
- })
-
group1.NewButton("dump repo.Control", func() {
// log.Info("CONTROL:", me.repo.Control)
for v := range me.repo.Control {
@@ -63,6 +59,8 @@ func doGui() {
grid := win.Middle.RawGrid()
cbox = newControl(grid)
+
+ updateControl(cbox)
}
// This initializes the control box
diff --git a/readControlFile.go b/readControlFile.go
index 21e141a..b53a79d 100644
--- a/readControlFile.go
+++ b/readControlFile.go
@@ -4,11 +4,26 @@ import (
"bufio"
"os"
"strings"
+ "unicode"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
+func trimNonNumericPrefix(s string) string {
+ // Find the index of the first character that IS a digit.
+ firstDigitIndex := strings.IndexFunc(s, unicode.IsDigit)
+
+ // If no digit is found, IndexFunc returns -1.
+ // In this case, the result should be an empty string.
+ if firstDigitIndex == -1 {
+ return ""
+ }
+
+ // Return the substring starting from the first digit.
+ return s[firstDigitIndex:]
+}
+
// readGitConfig reads and parses the control file
func readControlFile(repo *gitpb.Repo) error {
pairs := make(map[string]string)
@@ -31,6 +46,8 @@ func readControlFile(repo *gitpb.Repo) error {
}
defer file.Close()
+ pairs["Version"] = trimNonNumericPrefix(repo.GetCurrentVersion())
+
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
diff --git a/update.go b/update.go
index 2ae8ae9..b8b67b3 100644
--- a/update.go
+++ b/update.go
@@ -4,13 +4,12 @@ func updateControl(c *controlBox) {
c.Namespace.SetText(me.repo.Namespace)
c.URL.SetText(me.repo.URL)
c.Package.SetText(me.repo.Control["Package"])
- c.Source.SetText(me.repo.Control["Package"])
+ c.Source.SetText(me.repo.Control["Source"])
c.Maintainer.SetText(me.repo.Control["Maintainer"])
c.Packager.SetText(me.repo.Control["Packager"])
- c.Version.SetText(me.repo.GetCurrentVersion())
+ c.Version.SetText(me.repo.Control["Version"])
c.Description.SetText(me.repo.Control["Description"])
c.Depends.SetText(me.repo.Control["Depends"])
- c.Package.SetText(me.repo.Control["Package"])
c.Recommends.SetText(me.repo.Control["Recommends"])
c.Architecture.SetText("amd64")