diff options
| author | Jeff Carr <[email protected]> | 2024-12-13 02:21:25 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-12-13 02:21:25 -0600 |
| commit | 214865f134363f1bd0465e91c143fc3c2ffdc001 (patch) | |
| tree | a2423e45d02b3190617d468647782c0c2c81d720 /redoGoMod.go | |
| parent | c3e3dfd20952acfdf58d018cf16b3c2cd8bc2ae3 (diff) | |
save and restore from git notes
Diffstat (limited to 'redoGoMod.go')
| -rw-r--r-- | redoGoMod.go | 85 |
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() +} |
