// Copyright 2017-2025 WIT.COM Inc. All rights reserved. // Use of this source code is governed by the GPL 3.0 package main import ( "fmt" "os" "go.wit.com/lib/fhelp" "go.wit.com/lib/gui/shell" "go.wit.com/log" ) func doPublish() error { initForge() saferepo := me.forge.Repos.FindByNamespace("go.wit.com/lib/xgb") // safe to run things here if saferepo == nil { return log.Errorf("need a safe place to run GO commands from") } os.Chdir(saferepo.FullPath) if os.Getenv("GUIRELEASE_REASON") == "" { log.Info("$ENV[GUIRELEASE_REASON] was not set") reason := fhelp.InputFromUser("set tag message:") if reason == "" { me.sh.BadExit("merge failed", fmt.Errorf("GUIRELEASE_REASON was blank")) } os.Setenv("GUIRELEASE_REASON", reason) } var cmd []string cmd = []string{"forge", "merge", "--all"} if _, err := shell.RunRealtimeError(cmd); err != nil { me.sh.BadExit("merge failed", nil) } if argv.Force { cmd = []string{"forge", "--force", "merge", "check"} } else { cmd = []string{"forge", "merge", "check"} } if _, err := shell.RunRealtimeError(cmd); err != nil { if _, err := shell.RunVerbose(cmd); err != nil { me.sh.BadExit("merge failed", nil) } } if err := doInstall(); err != nil { log.Info("doInstall() failed", err) me.sh.BadExit("merge failed", nil) } cmd = []string{"guireleaser", "--gui", "andlabs", "--auto-run", "quick"} if _, err := shell.RunRealtimeError(cmd); err != nil { log.Info("releaser failed", err) me.sh.BadExit("publishing failed", nil) } if err := doOnlyDebianPackages(); err != nil { me.sh.BadExit("debian packages failed", err) } if _, err := shell.RunRealtimeError([]string{"do-aptly"}); err != nil { me.sh.BadExit("aptly failed", nil) } me.sh.GoodExit("PUBLISH WORKED") return nil }