summaryrefslogtreecommitdiff
path: root/redoGoMod.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-12-13 02:21:25 -0600
committerJeff Carr <[email protected]>2024-12-13 02:21:25 -0600
commit214865f134363f1bd0465e91c143fc3c2ffdc001 (patch)
treea2423e45d02b3190617d468647782c0c2c81d720 /redoGoMod.go
parentc3e3dfd20952acfdf58d018cf16b3c2cd8bc2ae3 (diff)
save and restore from git notes
Diffstat (limited to 'redoGoMod.go')
-rw-r--r--redoGoMod.go85
1 files changed, 85 insertions, 0 deletions
diff --git a/redoGoMod.go b/redoGoMod.go
new file mode 100644
index 0000000..f25a3b4
--- /dev/null
+++ b/redoGoMod.go
@@ -0,0 +1,85 @@
+package main
+
+// recreates the go.mod and go.sum files
+
+import (
+ "errors"
+ "os"
+
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+// remove every go.mod and go.sum
+// testing to see where this stuff is coming from
+func eraseGoMod(repo *gitpb.Repo) {
+ // unset the go development ENV var to generate release files
+ if err := repo.StrictRun([]string{"rm", "-f", "go.mod", "go.sum"}); err != nil {
+ log.Warn(repo.GoPath, "rm go.mod go.sum failed", err)
+ }
+}
+
+// sets the required golang version in go.mod
+func setGoVersion(repo *gitpb.Repo, version string) error {
+ // most things should build with golang after 1.20
+ if err := repo.StrictRun([]string{"go", "mod", "edit", "-go=" + version}); err != nil {
+ log.Warn(repo.GoPath, "go mod edit failed", err)
+ return err
+ }
+ return nil
+}
+
+// wrapper around 'go mod init' and 'go mod tidy'
+func redoGoMod(repo *gitpb.Repo) (bool, error) {
+ // unset the go development ENV var to generate release files
+ os.Unsetenv("GO111MODULE")
+ if err := repo.StrictRun([]string{"rm", "-f", "go.mod", "go.sum"}); err != nil {
+ log.Warn("rm go.mod go.sum failed", err)
+ return false, err
+ }
+ if err := repo.StrictRun([]string{"go", "mod", "init", repo.GoPath}); err != nil {
+ log.Warn("go mod init failed", err)
+ return false, err
+ }
+ if err := repo.StrictRun([]string{"go", "mod", "tidy"}); err != nil {
+ log.Warn("go mod tidy failed", err)
+ return false, err
+ }
+
+ // most things should build with golang after 1.20 // todo: allow this to be set somewhere
+ if err := setGoVersion(repo, "1.20"); err != nil {
+ log.Warn(repo.GoPath, "go mod edit failed", err)
+ return false, err
+ }
+
+ repo.GoDeps = nil
+ repo.GoPrimitive = false
+
+ // if there is not a go.sum file, it better be a primitive golang project
+ if !repo.Exists("go.sum") {
+ // this should never happen
+ return false, errors.New("MakeRedomod() logic failed")
+
+ ok, err := repo.IsPrimitive()
+ if err != nil {
+ // this means this repo does not depend on any other package
+ log.Info("PRIMATIVE repo error:", repo.GoPath, "err =", err)
+ return false, err
+ }
+
+ if ok {
+ // this means the repo is primitive so there is no go.sum
+ repo.GoPrimitive = true
+ return true, nil
+ }
+ }
+
+ repo.GoDeps = new(gitpb.GoDeps)
+ if !repo.Exists("go.sum") {
+ // this should never happen
+ return false, errors.New("MakeRedomod() logic failed")
+ }
+
+ // return the attempt to parse go.sum
+ return repo.ParseGoSum()
+}