summaryrefslogtreecommitdiff
path: root/doPull.go
diff options
context:
space:
mode:
Diffstat (limited to 'doPull.go')
-rw-r--r--doPull.go66
1 files changed, 65 insertions, 1 deletions
diff --git a/doPull.go b/doPull.go
index 0558b8f..d85773b 100644
--- a/doPull.go
+++ b/doPull.go
@@ -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
}