summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-02-20 06:53:42 -0600
committerJeff Carr <[email protected]>2024-02-20 06:53:42 -0600
commit14b2fbb00bbff263f52d4a170397129cbb05046e (patch)
treea470aa72d9b3098fd182352226f55593017679b7
parent5bf1c5ff359e2546925bb2de2bd2a3f887d252ab (diff)
moving go.* processing here
-rw-r--r--addRepo.go3
-rw-r--r--flags.go20
-rw-r--r--goConfig.go119
3 files changed, 140 insertions, 2 deletions
diff --git a/addRepo.go b/addRepo.go
index 04fd1ab..79c78d5 100644
--- a/addRepo.go
+++ b/addRepo.go
@@ -171,8 +171,7 @@ func (r *RepoList) addRepo(grid *gui.Node, path string, master string, devel str
newRepo.gitState = newRepo.Status.MirrorGitState()
grid.Append(newRepo.gitState)
- newRepo.goState = newRepo.Status.MirrorGoState()
- grid.Append(newRepo.goState)
+ newRepo.goState = grid.NewLabel("goState")
newRepo.endBox = grid.NewHorizontalBox("HBOX")
newRepo.endBox.NewButton("Configure", func() {
diff --git a/flags.go b/flags.go
new file mode 100644
index 0000000..86b2652
--- /dev/null
+++ b/flags.go
@@ -0,0 +1,20 @@
+package repolist
+
+/*
+ this enables command line options from other packages like 'gui' and 'log'
+*/
+
+import (
+ "go.wit.com/log"
+)
+
+var REPO *log.LogFlag
+var REPOWARN *log.LogFlag
+
+func init() {
+ full := "go.wit.com/lib/gui/repo"
+ short := "repo"
+
+ REPO = log.NewFlag("REPO", false, full, short, "general repo things")
+ REPOWARN = log.NewFlag("REPOWARN", true, full, short, "general repo things")
+}
diff --git a/goConfig.go b/goConfig.go
new file mode 100644
index 0000000..dfe809e
--- /dev/null
+++ b/goConfig.go
@@ -0,0 +1,119 @@
+package repolist
+
+// does processing on the go.mod and go.sum files
+
+import (
+ "errors"
+ "strings"
+
+ "go.wit.com/log"
+)
+
+// scans through everything in the go.sum file to make
+// sure the versions are correct when attempting to do a GUI release
+func (rl *RepoList) CheckValidGoSum(r *Repo) (bool, error) {
+ log.Log(REPOWARN, "CheckValidGoSum() started")
+ ok, err := r.Status.MakeRedomod()
+ if !ok {
+ log.Log(REPOWARN, "CheckValidGoSum() failed", err)
+ return ok, err
+ }
+
+ // go through each go.sum dependancy to see if the package is released
+ for depPath, version := range r.Status.GoConfig() {
+ log.Log(REPO, " ", depPath, version)
+
+ // lookup the repo
+ deprs := rl.FindRepo(depPath)
+ if deprs == nil {
+ // well, the go.sum dependancy hasn't been processed or doesn't exist
+ // so, download it? ignore it?
+ // for now, if it's not one of the GUI repos, assume it's readonly and ignore it
+ if strings.HasPrefix(depPath, "go.wit.com") {
+ log.Log(REPOWARN, "Run: go get -v", depPath)
+ // rs.RunCmd([]string{"go", "get", "-v", depname}) // download this here?
+ return false, errors.New("CheckValidGoSum() download repo: " + depPath)
+ }
+ // it's probably okay. running a compile check before this would be a good test
+ continue
+ }
+ if deprs.ReadOnly() {
+ // ignore versioning on other repos. todo: help fix this situation somehow?
+ continue
+ }
+ if deprs.CheckDirty() {
+ return false, errors.New("CheckValidGoSum() depends on dirty repo " + deprs.GoPath())
+ }
+ currentV := deprs.Status.GetCurrentVersion()
+ targetV := deprs.Status.GetTargetVersion()
+ if currentV != targetV {
+ return false, errors.New("CheckValidGoSum() depends on yet unreleased repo " + deprs.GoPath())
+ }
+ }
+ // no dependancies error'd out. It should be ok to release this package
+ log.Log(REPOWARN, "Releasing this should be ok", r.GoPath)
+ return true, nil
+}
+
+/*
+// check if it is safe to remake the go.sum & go.mod files
+func (rs *RepoStatus) CheckSafeGoSumRemakeOld() (bool, []string) {
+ // myGoSumS := rs.goSumStatus.String()
+ if rs.ReadGoMod() {
+ log.Log(REPO, "parsed go.mod", rs.realPath.String())
+ } else {
+ log.Log(REPOWARN, "Something went wrong parsing go.mod", rs.realPath.String())
+ return false, nil
+ }
+ log.Log(REPOWARN, "go.sum:", rs.realPath.String())
+ var clean []string
+ for depname, version := range rs.goConfig {
+ if strings.HasSuffix(depname, "/v2") {
+ log.Log(REPOWARN, " FOUND /v2 wierd golang stuff. instead, look for:", depname)
+ depname = strings.TrimSuffix(depname, "/v2")
+ }
+ log.Log(REPOWARN, " ", depname, version)
+ deprs, ok := windowMap[depname]
+ if ok {
+ if deprs.CheckDirty() {
+ log.Log(REPOWARN, " IS DIRTY", deprs.String())
+ clean = append(clean, deprs.String())
+ }
+ if deprs.readOnly.String() == "true" {
+ log.Log(REPOWARN, " SKIPPING Read Only", deprs.String())
+ } else {
+ // goSumS := deprs.goSumStatus.String()
+ log.Log(REPOWARN, " FOUND", deprs.String())
+ username := deprs.mainWorkingName.String()
+ userhash, _ := deprs.gitConfig.hashes[username]
+ userversion, _ := deprs.gitConfig.versions[userhash]
+ log.Log(REPOWARN, " username :"+username, userhash)
+ log.Log(REPOWARN, " username :"+username, userversion)
+ if version == userversion {
+ log.Log(REPOWARN, " USER VERSIONS MATCH", version, userversion)
+ clean = append(clean, deprs.String())
+ } else {
+ os.Unsetenv("GO111MODULE")
+ log.Log(REPOWARN, " USER VERSIONS MISMATCH", version, userversion)
+ log.Log(REPOWARN, " IGNORE UNCHANGED REPO. RUNNING 'go get'", depname, userversion)
+ err, output := rs.RunCmd([]string{"go", "get", depname + "@" + userversion})
+ log.Log(REPOWARN, " go get", depname, err, output)
+ }
+ }
+ } else {
+ // log.Log(REPOWARN, " NOT FOUND", depname)
+ // only fail on our stuff
+ if strings.HasPrefix(depname, "go.wit.com") {
+ log.Log(REPOWARN, " go get -v", depname)
+ // rs.RunCmd([]string{"go", "get", "-v", depname})
+ return false, clean
+ }
+ // log.Log(REPOWARN, " NOT FOUND BUT IGNORING FOR NOW")
+ }
+ }
+ if len(clean) == 0 {
+ return true, nil
+ }
+ return false, clean
+}
+*/