diff --git a/git.go b/git.go index f51d74d..6e05316 100644 --- a/git.go +++ b/git.go @@ -298,7 +298,7 @@ func (rs *RepoStatus) CheckoutUser() bool { log.Log(REPO, rs.realPath.String(), "is dirty") return false } - if ! rs.BranchExists(bName) { + if !rs.BranchExists(bName) { return false } cmd := []string{"git", "checkout", bName} diff --git a/gitConfig.go b/gitConfig.go index abfc72a..b2c2af9 100644 --- a/gitConfig.go +++ b/gitConfig.go @@ -281,5 +281,14 @@ func (rs *RepoStatus) BranchExists(branch string) bool { log.Log(REPOWARN, rs.Path(), "found branch", branch, hash) return true } + for i, t := range rs.Tags.tags { + base := filepath.Base(t.tag.String()) + if base == branch { + log.Info("found tag:", i, t.tag.String()) + return true + } + log.Info("not tag:", i, t.tag.String()) + } + log.Log(REPOWARN, rs.Path(), "did not find branch", branch) return false } diff --git a/goList.go b/goList.go new file mode 100644 index 0000000..b49ecd2 --- /dev/null +++ b/goList.go @@ -0,0 +1,34 @@ +package repostatus + +import ( + "encoding/json" + "errors" + + "go.wit.com/lib/gui/shell" + "go.wit.com/log" +) + +// go list -json -m go.wit.com/apps/go-clone@latest + +// go list -json -m go.wit.com/apps/go-clone@latest +// { +// "Path": "go.wit.com/apps/go-clone", +// "Version": "v0.0.6", +// "Query": "latest", +// "Time": "2024-03-10T04:12:15Z", +// "GoMod": "/home/jcarr/go/pkg/mod/cache/download/go.wit.com/apps/go-clone/@v/v0.0.6.mod", +// "GoVersion": "1.22.0" +// } + +func runGoList(url string) (string, error) { + r := shell.RunPath("", []string{"go", "list", "-json", "-m", url + "@latest"}) + log.Info("runGoList() r.Output =", r.Output) + var modInfo any + err := json.Unmarshal(r.Output, &modInfo) + if err != nil { + log.Info("runGoList() json.Unmarshal() error =", err) + return "", err + } + log.Spew(modInfo) + return "", errors.New("todo: parse json") +} diff --git a/new.go b/new.go index b523c44..670c967 100644 --- a/new.go +++ b/new.go @@ -133,7 +133,8 @@ func Clone(wdir string, path string) error { return nil } var url string - if url, err = findGoImport("http://" + path); err != nil { + // if url, err = findGoImport("http://" + path); err != nil { + if url, err = runGoList(path); err != nil { return err } log.Info("URL:", url)