diff options
| author | Jeff Carr <[email protected]> | 2024-12-15 12:14:22 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-12-15 12:14:22 -0600 |
| commit | bab2506d348a634ad35f81a09675c9beed493d2b (patch) | |
| tree | 799b8bcadd628af1f856811512db31c1389c0dc2 | |
| parent | b3bfa8915c1cc39bb36094829273d43621eb39ee (diff) | |
trying to fix clonev0.6.28
| -rw-r--r-- | argv.go | 4 | ||||
| -rw-r--r-- | clone.go | 56 | ||||
| -rw-r--r-- | main.go | 3 |
3 files changed, 38 insertions, 25 deletions
@@ -12,7 +12,7 @@ type args struct { Repo string `arg:"positional" help:"go import path"` AutoWork bool `arg:"--work" default:"false" help:"recreate the go.work file"` DryRun bool `arg:"--dry-run" help:"show what would be run"` - Recursive bool `arg:"--recursive" default:"false" help:"resursively clone all dependencies"` + Recursive bool `arg:"--recursive" default:"false" help:"recursively clone all dependencies"` Pull bool `arg:"--git-pull" default:"false" help:"run 'git pull'"` Build bool `arg:"--build" default:"true" help:"try to build it after clone"` Install bool `arg:"--install" default:"false" help:"try to install it after clone"` @@ -29,7 +29,7 @@ git clone go repositories Examples: go-clone go.wit.com/apps/go-clone # simply try to git clone this - go-clone --recursive go.wit.com/apps/go-clone # recursively clone all the dependancies + go-clone --recursive go.wit.com/apps/go-clone # recursively clone all the dependencies go-clone --auto-work go.wit.com/apps/go-clone # if you are using a go.work file, recreate the go.work file go-clone --go-reset # recreate every go.mod and go.sum file go-clone --git-pull # run 'git pull' in every repo @@ -32,31 +32,9 @@ func clone(gopath string) (*gitpb.Repo, error) { return nil, err } - // first try to generate go.mod & go.sum with go-mod-clean - if err := pb.ValidGoSum(); err != nil { - // update go.sum and go.mod - if err := pb.RunStrict([]string{"go-mod-clean"}); err != nil { - log.Info("") - log.Info("Do you have go-mod-clean? Otherwise:") - log.Info(" go install go.wit.com/apps/go-mod-clean@latest") - log.Info("") - } - } - // if this fails, just use go mod - if err := pb.ValidGoSum(); err != nil { - if err := pb.RunStrict([]string{"go", "mod", "init", pb.GoPath}); err != nil { - log.Info("go mod init failed", err) - } - if err := pb.RunStrict([]string{"go", "mod", "tidy"}); err != nil { - log.Info("go mod tidy failed", err) - } - } - if err := pb.ValidGoSum(); err != nil { - // have to give up. can't recursive clone without go.mod file - log.Info("could not generate valid go.sum file") + if err := makeValidGoSum(pb); err != nil { return nil, err } - pb.ParseGoSum() // double check it actually downloaded fullgitdir := filepath.Join(forge.GetGoSrc(), gopath, ".git") @@ -128,3 +106,35 @@ func recursiveClone(check *gitpb.Repo) error { } return nil } + +func makeValidGoSum(check *gitpb.Repo) error { + // first try to generate go.mod & go.sum with go-mod-clean + if err := check.ValidGoSum(); err != nil { + log.Info("try running go-mod-clean") + // update go.sum and go.mod + if err := check.RunStrict([]string{"go-mod-clean"}); err != nil { + log.Info("") + log.Info("Do you have go-mod-clean? Otherwise:") + log.Info(" go install go.wit.com/apps/go-mod-clean@latest") + log.Info("") + } + } + // if this fails, just use go mod + if err := check.ValidGoSum(); err != nil { + cmd := []string{"go", "mod", "init", check.GoPath} + log.Info("try running", cmd) + if err := check.RunStrict(cmd); err != nil { + log.Info("go mod init failed", err) + } + if err := check.RunStrict([]string{"go", "mod", "tidy"}); err != nil { + log.Info("go mod tidy failed", err) + } + } + if err := check.ValidGoSum(); err != nil { + // have to give up. can't recursive clone without go.mod file + log.Info("could not generate valid go.sum file") + return err + } + check.ParseGoSum() + return nil +} @@ -49,6 +49,9 @@ func main() { } autoWork() if argv.Build { + if err := makeValidGoSum(workingRepo); err != nil { + badExit(err) + } if err := build(); err != nil { badExit(err) } |
