summaryrefslogtreecommitdiff
path: root/buildPackage.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-03-01 07:44:02 -0600
committerJeff Carr <[email protected]>2024-03-01 07:44:02 -0600
commit8d25d3996e8372129928d39cb4c8b25e8612ebbc (patch)
tree7591a895e11f18d403bef3a2b1de049aabc89461 /buildPackage.go
parentd02e23a68a072efdc3f1d69ab76662501f09fd6f (diff)
better error handling
Diffstat (limited to 'buildPackage.go')
-rw-r--r--buildPackage.go102
1 files changed, 54 insertions, 48 deletions
diff --git a/buildPackage.go b/buildPackage.go
index 814aa30..2f1127f 100644
--- a/buildPackage.go
+++ b/buildPackage.go
@@ -3,6 +3,7 @@
package main
import (
+ "errors"
"fmt"
"os"
"path/filepath"
@@ -14,7 +15,7 @@ import (
"go.wit.com/log"
)
-func (c *controlBox) buildPackage() bool {
+func (c *controlBox) buildPackage() error {
// TODO: if dirty, set GO111MODULE
// also, if last tag != version
/*
@@ -26,70 +27,85 @@ func (c *controlBox) buildPackage() bool {
*/
// ldflags := "main.GOTAG=" + repo.LastTag()
+ filename := c.Package.String()
+ if filename == "" {
+ return errors.New("filename is blank")
+ }
+
+ homeDir, err := os.UserHomeDir()
+ if err != nil {
+ return err
+ }
+
+ arch := c.Architecture.String()
+ version := c.Version.String()
+ if version == "" {
+ version = "0.0.0"
+ }
+ debname := filename + "_" + version + "_" + arch + ".deb"
+ var fullfilename string
+ if args.Release {
+ fullfilename = filepath.Join(homeDir, "go/bin", filename)
+ } else {
+ fullfilename = filename
+ }
+ shell.Run([]string{"rm", "-f", fullfilename})
+
+ if shell.Exists(fullfilename) {
+ // something wrong
+ return errors.New("binary existed before build")
+ }
+
if args.Release {
os.Unsetenv("GO111MODULE")
path := c.pathL.String() + "@latest"
cmd := []string{"go", "install", "-v", "-x", path}
if shell.Run(cmd) {
- log.Warn("build worked")
+ log.Warn("go install worked")
} else {
- log.Warn("build failed")
- return false
+ return errors.New("go install")
}
} else {
-
+ // set the GO111 build var to true. pass the versions to the compiler manually
os.Setenv("GO111MODULE", "off")
- if shell.Run([]string{"go", "build", "-v", "-x"}) {
- log.Warn("build worked")
+ vldflag := "-X main.VERSION=" + version
+ gldflag := "-X main.GUIVERSION=" + version // todo: git this from the filesystem
+ if shell.Run([]string{"go", "build", "-v", "-x", "-ldflags", vldflag, gldflag}) {
+ log.Warn("go build worked")
} else {
- log.Warn("build failed")
- return false
+ return errors.New("go build")
}
}
- filename := c.Package.String()
- if filename == "" {
- log.Warn("build failed")
- return false
- }
- if !shell.Exists(filename) {
- log.Warn("build failed")
- return false
- }
-
- arch := c.Architecture.String()
- version := c.Version.String()
- if version == "" {
- version = "0.0.0"
+ if !shell.Exists(fullfilename) {
+ log.Warn("build failed. filename does not exist", fullfilename)
+ return errors.New("missing" + fullfilename)
}
- debname := filename + "_" + version + "_" + arch + ".deb"
-
if shell.Exists("files") {
if !shell.Run([]string{"rm", "-rf", "files"}) {
log.Warn("rm failed")
- return false
+ return errors.New("rm files/")
}
}
if shell.Exists("files") {
log.Warn("rm failed")
- return false
+ return errors.New("rm files/")
}
if !shell.Mkdir("files/DEBIAN") {
- log.Warn("mkdir failed")
- return false
+ return errors.New("mkdir files/DEBIAN")
}
if !shell.Mkdir("files/usr/bin") {
log.Warn("mkdir failed")
- return false
+ return errors.New("mkdir files/usr/bin")
}
- if !shell.Run([]string{"cp", filename, "files/usr/bin"}) {
+ if !shell.Run([]string{"cp", fullfilename, "files/usr/bin"}) {
log.Warn("cp failed")
- return false
+ return errors.New("cp " + fullfilename)
}
if !shell.Run([]string{"strip", "files/usr/bin/" + filename}) {
log.Warn("strip failed")
- return false
+ return errors.New("strip " + filename)
}
// put the README in there (if missing, generate it?)
@@ -105,24 +121,15 @@ func (c *controlBox) buildPackage() bool {
if readme != "" {
path := filepath.Join("files/usr/lib/" + filename)
if !shell.Mkdir(path) {
- log.Warn("mkdir failed")
- return false
+ return errors.New("no files/usr/lib")
}
if !shell.Run([]string{"cp", readme, path}) {
- log.Warn("cp failed")
- return false
+ return errors.New("cp readme")
}
}
if !c.writeFiles() {
- log.Warn("write control file failed")
- return false
- }
-
- homeDir, err := os.UserHomeDir()
- if err != nil {
- log.Warn("os.UserHomeDir() failed")
- return false
+ return errors.New("write control file")
}
// experiment for the toolkit package
@@ -139,14 +146,13 @@ func (c *controlBox) buildPackage() bool {
shell.Run([]string{"dpkg-deb", "--build", "files", fulldebname})
if shell.Exists(fulldebname) {
- log.Warn("build worked")
} else {
log.Warn("build failed")
- return false
+ return errors.New("dpkg-deb --build worked")
}
shell.Run([]string{"dpkg-deb", "-I", fulldebname})
shell.Run([]string{"dpkg-deb", "-c", fulldebname})
- return true
+ return nil
}
func (c *controlBox) writeFiles() bool {