diff options
Diffstat (limited to 'doPull.go')
| -rw-r--r-- | doPull.go | 66 |
1 files changed, 65 insertions, 1 deletions
@@ -3,6 +3,7 @@ package main import ( "os" "path/filepath" + "strings" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/lib/protobuf/gitpb" @@ -74,11 +75,73 @@ func tryGitClone(repo *gitpb.Repo, dir string) error { return err } -func doList() { +func initForged() *forgepb.Forge { log.Info("do pull here") dirs, err := scanForgedDir(FORGEDIR) if err != nil { badExit(err) + return nil + } + os.Chdir(FORGEDIR) + forge := forgepb.InitPB() + log.Printf("forged has %d repos\n", forge.Repos.Len()) + // forge.PrintHumanTable(forge.Repos) + + for _, dir := range dirs { + oldr, err := readGitPB(dir) + if err != nil { + log.Info("readGitPB() failed", dir, err) + continue + } + + fullpath := filepath.Join(dir, "git.clone") + + if check := forge.Repos.FindByFullPath(fullpath); check != nil { + // log.Info(oldr.Namespace, fullpath, "already added") + continue + } + // check to see if 'git clone' has already been run + _, err = os.Stat(fullpath) + if os.IsNotExist(err) { + log.Info("repo needs cloning:", oldr.Namespace, oldr.FullPath, dir) + } else { + log.Info("repo is already cloned", dir, oldr.Namespace) + } + } + + return forge +} + +func verifyForged(f *forgepb.Forge) { + var changed bool = false + for repo := range f.Repos.IterAll() { + if strings.HasPrefix(repo.GetFullPath(), os.Getenv("FORGE_GOSRC")) { + // log.Info(os.Getenv("FORGE_GOSRC"), repo.GetFullPath()) + } else { + log.Info("not here", os.Getenv("FORGE_GOSRC"), repo.GetFullPath()) + f.Repos.Delete(repo) + changed = true + } + } + if changed { + f.Repos.ConfigSave() + } +} + +func doInit() *forgepb.Forge { + forge := initForged() + + verifyForged(forge) + + return forge +} + +func doList() any { + log.Info("do pull here") + dirs, err := scanForgedDir(FORGEDIR) + if err != nil { + badExit(err) + return err } os.Chdir(FORGEDIR) forge := forgepb.InitPB() @@ -133,4 +196,5 @@ func doList() { forge.PrintHumanTable(forge.Repos) forge.Repos.ConfigSave() okExit("") + return nil } |
