summaryrefslogtreecommitdiff
path: root/doRelease.go
diff options
context:
space:
mode:
Diffstat (limited to 'doRelease.go')
-rw-r--r--doRelease.go131
1 files changed, 131 insertions, 0 deletions
diff --git a/doRelease.go b/doRelease.go
new file mode 100644
index 0000000..2ff444f
--- /dev/null
+++ b/doRelease.go
@@ -0,0 +1,131 @@
+// This is a simple example
+package main
+
+import (
+ "os"
+ "strings"
+
+ "go.wit.com/log"
+)
+
+func doRelease() bool {
+ if release.releaseVersionB.String() != "release version "+release.version.String() {
+ log.Warn("something went wrong with the release.version:", release.version.String())
+ return false
+ }
+ if strings.HasPrefix(release.version.String(), "v") {
+ log.Warn("everything is ok. version starts with v.", release.version.String())
+ } else {
+ log.Warn("version does not start with v.", release.version.String())
+ return false
+ }
+ switch release.status.String() {
+ case "PRIMATIVE":
+ log.Warn("can do PRIMATIVE", release.version.String())
+ case "GOOD":
+ log.Warn("GOOD. lots of go.sum checks passed", release.version.String())
+ case "manually chosen":
+ log.Warn("attempting manual release", release.version.String())
+ case "NOT READY":
+ log.Warn("attempting to release. TODO: recheck go.sum here", release.version.String())
+ log.Warn("Sleep 10")
+ log.Sleep(10)
+ case "UNRELEASED":
+ log.Warn("attempting to release. TODO: dig deep on go.sum here", release.version.String())
+ log.Warn("Sleep 10")
+ log.Sleep(10)
+ default:
+ log.Warn("what is this?", release.version.String(), release.status.String())
+ return false
+ }
+
+ if release.current.status.ReadOnly() {
+ log.Info("sorry, it's read-only")
+ return true
+ }
+ if release.current.status.CheckDirty() {
+ log.Info("sorry, it's still dirty")
+ return false
+ }
+
+ curName := release.current.status.GetCurrentBranchName()
+ mName := release.current.status.GetMasterBranchName()
+ if curName != mName {
+ log.Info("\trepo is not working from main branch", curName, "!=", mName)
+ return false
+ }
+
+ log.Info("\ttag and push", curName, release.version.String(), me.releaseReasonS)
+
+ var all [][]string
+ all = append(all, []string{"git", "add", "-f", "go.mod"})
+ if release.current.status.CheckPrimativeGoMod() {
+ // don't add go.sum here. TODO: check for go.sum file and fail
+ } else {
+ all = append(all, []string{"git", "add", "-f", "go.sum"})
+ }
+ all = append(all, []string{"git", "commit", "-m", me.releaseReasonS})
+ all = append(all, []string{"git", "push"})
+ all = append(all, []string{"git", "tag", "-m", me.releaseReasonS, release.version.String()})
+ all = append(all, []string{"git", "push", "origin", release.version.String()})
+
+ if doAll(release.current, all) {
+ log.Info("EVERYTHING OK")
+
+ gopath := release.current.String()
+ cmd := []string{"go", "get", "-v", gopath + "@" + release.version.String()}
+ log.Info("SHOULD RUN cmd HERE:", cmd)
+
+ if release.guireleaser == nil {
+ log.Info("CAN NOT SELF UPDATE HERE. cmd =", cmd)
+ return false
+ } else {
+ os.Unsetenv("GO111MODULE")
+ log.Info("TRYING TO SELF UPDATE HERE. cmd =", cmd)
+ err, out := release.guireleaser.status.RunCmd(cmd)
+ if gopath == "go.wit.com/apps/guireleaser" {
+ // ignore errors on updating myself
+ log.Info("IGNORE SELF UPDATE ERROR. cmd =", cmd)
+ err = nil
+ }
+ if err == nil {
+ log.Info("SELF UPDATE OK. out =", out)
+ log.Info("SELF UPDATE WORKED")
+ release.current.setGoSumStatus("RELEASED")
+
+ release.current.status.UpdateCurrent()
+ // repo.newScan()
+ cbname := release.current.status.GetCurrentBranchName()
+ cbversion := release.current.status.GetCurrentBranchVersion()
+ lasttag := release.current.status.GetLastTagVersion()
+ release.current.lastTag.SetLabel(lasttag)
+ release.current.vLabel.SetLabel(cbname + " " + cbversion)
+
+ // scan for new repo
+ if findNextDirty("") {
+ log.Info("findNextDirty() found something")
+ } else {
+ log.Info("findNextDirty() could not find anything")
+ return false
+ }
+ release.current.status.CheckSafeGoSumRemake()
+ release.current.status.MakeRedomod()
+ if ok, _ := release.current.status.CheckGoSum(); ok {
+ log.Info("repo has go.sum requirements that are clean")
+ // release.current.setGoSumStatus("CLEAN")
+ release.status.SetValue("GOOD")
+ release.notes.SetValue("CheckGoSum() does not seem to lie")
+ return true
+ } else {
+ return false
+ }
+ } else {
+ log.Info("SELF UPDATE FAILED err =", err)
+ log.Info("SELF UPDATE FAILED out =", out)
+ return false
+ }
+ }
+ }
+ log.Info("doAll() failed")
+ return false
+}