diff options
Diffstat (limited to 'buildPackage.go')
| -rw-r--r-- | buildPackage.go | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/buildPackage.go b/buildPackage.go index a75634e..b45f0d6 100644 --- a/buildPackage.go +++ b/buildPackage.go @@ -15,7 +15,7 @@ import ( "go.wit.com/log" ) -func (c *controlBox) buildPackage() error { +func (c *controlBox) buildPackage() (bool, error) { // TODO: if dirty, set GO111MODULE // also, if last tag != version /* @@ -29,12 +29,12 @@ func (c *controlBox) buildPackage() error { filename := c.Package.String() if filename == "" { - return errors.New("filename is blank") + return false, errors.New("filename is blank") } homeDir, err := os.UserHomeDir() if err != nil { - return err + return false, err } arch := c.Architecture.String() @@ -43,6 +43,11 @@ func (c *controlBox) buildPackage() error { version = "0.0.0" } debname := filename + "_" + version + "_" + arch + ".deb" + fulldebname := filepath.Join(homeDir, "incoming", debname) + if shell.Exists(fulldebname) { + return true, errors.New("debian package already built: " + fulldebname) + } + var fullfilename string if args.Release { fullfilename = filepath.Join(homeDir, "go/bin", filename) @@ -53,7 +58,7 @@ func (c *controlBox) buildPackage() error { if shell.Exists(fullfilename) { // something wrong - return errors.New("binary existed before build") + return false, errors.New("binary existed before build") } if args.Release { @@ -63,7 +68,7 @@ func (c *controlBox) buildPackage() error { if shell.Run(cmd) { log.Warn("go install worked") } else { - return errors.New("go install") + return false, errors.New("go install") } } else { // set the GO111 build var to true. pass the versions to the compiler manually @@ -73,39 +78,39 @@ func (c *controlBox) buildPackage() error { if shell.Run([]string{"go", "build", "-v", "-x", "-ldflags", vldflag, "-ldflags", gldflag}) { log.Warn("go build worked") } else { - return errors.New("go build") + return false, errors.New("go build") } } if !shell.Exists(fullfilename) { log.Warn("build failed. filename does not exist", fullfilename) - return errors.New("missing" + fullfilename) + return false, errors.New("missing" + fullfilename) } if shell.Exists("files") { if shell.Run([]string{"rm", "-rf", "files"}) { log.Warn("rm failed") - return errors.New("rm files/") + return false, errors.New("rm files/") } } if shell.Exists("files") { log.Warn("rm failed") - return errors.New("rm files/") + return false, errors.New("rm files/") } if !shell.Mkdir("files/DEBIAN") { - return errors.New("mkdir files/DEBIAN") + return false, errors.New("mkdir files/DEBIAN") } if !shell.Mkdir("files/usr/bin") { log.Warn("mkdir failed") - return errors.New("mkdir files/usr/bin") + return false, errors.New("mkdir files/usr/bin") } if !shell.Run([]string{"cp", fullfilename, "files/usr/bin"}) { log.Warn("cp failed") - return errors.New("cp " + fullfilename) + return false, errors.New("cp " + fullfilename) } if !shell.Run([]string{"strip", "files/usr/bin/" + filename}) { log.Warn("strip failed") - return errors.New("strip " + filename) + return false, errors.New("strip " + filename) } // put the README in there (if missing, generate it?) @@ -121,18 +126,20 @@ func (c *controlBox) buildPackage() error { if readme != "" { path := filepath.Join("files/usr/lib/" + filename) if !shell.Mkdir(path) { - return errors.New("no files/usr/lib") + return false, errors.New("no files/usr/lib") } if !shell.Run([]string{"cp", readme, path}) { - return errors.New("cp readme") + return false, errors.New("cp readme") } } if !c.writeFiles() { - return errors.New("write control file") + return false, errors.New("write control file") } // 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 c.status.Exists("build") { if args.Release { os.Unsetenv("GO111MODULE") @@ -142,17 +149,23 @@ func (c *controlBox) buildPackage() error { shell.Run([]string{"./build"}) } - fulldebname := filepath.Join(homeDir, "incoming", debname) - shell.Run([]string{"dpkg-deb", "--build", "files", fulldebname}) if shell.Exists(fulldebname) { } else { log.Warn("build failed") - return errors.New("dpkg-deb --build worked") + return false, errors.New("dpkg-deb --build failed") } shell.Run([]string{"dpkg-deb", "-I", fulldebname}) shell.Run([]string{"dpkg-deb", "-c", fulldebname}) - return nil + + // cleanup files + if shell.Exists("files") { + if shell.Run([]string{"rm", "-rf", "files"}) { + log.Warn("rm failed") + return false, errors.New("rm files/") + } + } + return true, nil } func (c *controlBox) writeFiles() bool { |
