diff options
Diffstat (limited to 'doRelease.go')
| -rw-r--r-- | doRelease.go | 131 |
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 +} |
