diff options
Diffstat (limited to 'buildPackage.go')
| -rw-r--r-- | buildPackage.go | 102 |
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 { |
