summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-09-25 21:03:06 -0500
committerJeff Carr <[email protected]>2025-09-25 21:04:08 -0500
commit843e6c84bd278c75b78e403c81e3390ed9594317 (patch)
treea1bbb4e11eb119487deb038f8fa5bc1ea4e55954
parent77f95fe0ad5d9916917ca139a7fb788c70e8877a (diff)
pull out the old repos codev0.0.48
-rw-r--r--Makefile3
-rw-r--r--doRepos.go162
-rw-r--r--main.go3
3 files changed, 162 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index b391c8c..cbc480b 100644
--- a/Makefile
+++ b/Makefile
@@ -5,8 +5,7 @@ VERSION = $(shell git describe --tags)
BUILDTIME = $(shell date +%s)
all: build
- FORGE_VERBOSE=true ./forged patches list
- # FORGE_VERBOSE=true ./forged list
+ ./forged repos
build: goimports
GO111MODULE=off go build \
diff --git a/doRepos.go b/doRepos.go
index c6fece8..b6c92cd 100644
--- a/doRepos.go
+++ b/doRepos.go
@@ -1,6 +1,11 @@
package main
import (
+ "os"
+ "path/filepath"
+
+ "go.wit.com/lib/protobuf/forgepb"
+ "go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
@@ -9,11 +14,162 @@ func doRepos() error {
return doReposList()
}
- return doReposList()
+ log.Infof("Repos len=%d\n", me.forge.Repos.Len())
+ me.forge.PrintHumanTableFull(me.forge.Repos)
+ return nil
+}
+
+func doReposInit() {
+ log.Info("do pull here")
+ dirs, err := scanForgedDir(FORGEDIR)
+ if err != nil {
+ badExit(err)
+ }
+ os.Chdir(FORGEDIR)
+
+ for _, dir := range dirs {
+ // log.Info("found repo", i, dir)
+ // repo, err := me.forge.AddNamespaceDir(ns string, fullpath string)
+ repo, err := readGitPB(dir)
+ if err != nil {
+ log.Info(dir, err)
+ continue
+ }
+
+ // check to see if 'git clone' has already been run
+ _, err = os.Stat(filepath.Join(dir, "git.clone"))
+ if os.IsNotExist(err) {
+ log.Info("repo needs cloning:", repo.Namespace, repo.URL, dir)
+ if err := tryGitClone(repo, dir); err == nil {
+ continue
+ }
+
+ // check for GO lang specific 'git clone' redirects
+ if pkgurl, err := forgepb.RunGoList(repo.Namespace); err == nil {
+ log.Info("NEED TO TRY", pkgurl)
+ // if repo, err := f.urlClone(gopath, pkgurl); repo != nil {
+ // return repo, err
+ // }
+ if err := forgepb.RunGitClone("git.clone", dir, pkgurl); err == nil {
+ } else {
+ badExit(err)
+ }
+ } else {
+ badExit(err)
+ }
+ } else {
+ // log.Info("repo is already cloned", dir, repo.Namespace)
+ }
+ }
+ okExit("")
+}
+
+func tryGitClone(repo *gitpb.Repo, dir string) error {
+ if err := forgepb.RunGitClone("git.clone", dir, "https://"+repo.Namespace); err == nil {
+ return nil
+ }
+ giturl, err := forgepb.FindGoImport("https://" + repo.Namespace)
+ if err == nil {
+ log.Info("TRY THIS INSTEAD!!!!", giturl)
+ if err := forgepb.RunGitClone("git.clone", dir, giturl); err != nil {
+ log.Info("git clone still failed", giturl, err)
+ return err
+ }
+ return nil
+ }
+ log.Info("git clone failed", err)
+ return err
}
+func initForged() error {
+ log.Info("do pull here")
+ dirs, err := scanForgedDir(FORGEDIR)
+ if err != nil {
+ return err
+ }
+ log.Printf("forged has %d repos\n", me.forge.Repos.Len())
+ // me.forge.PrintHumanTable(me.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 := me.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 nil
+}
+
+/*
+func verifyForged() {
+ var changed bool = false
+ for repo := range me.forge.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())
+ me.forge.Repos.Delete(repo)
+ changed = true
+ }
+ }
+ if changed {
+ f.Repos.ConfigSave()
+ }
+}
+*/
+
func doReposList() error {
- log.Infof("Repos.Len()=%d\n", me.forge.Repos.Len())
- // me.forge.Repos.PrintTable()
+ log.Info("do pull here")
+ dirs, err := scanForgedDir(FORGEDIR)
+ if err != nil {
+ badExit(err)
+ return err
+ }
+
+ count := 0
+ for _, dir := range dirs {
+ // log.Info("found repo", i, dir)
+ // repo, err := forge.AddNamespaceDir(ns string, fullpath string)
+ oldr, err := readGitPB(dir)
+ if err != nil {
+ log.Info(dir, err)
+ continue
+ }
+
+ fullpath := filepath.Join(dir, "git.clone")
+
+ if check := me.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, repo.URL, dir)
+ } else {
+ log.Info("repo is already cloned", dir, oldr.Namespace)
+ // me.forge.Repos.Append(newr)
+ // break
+ if count > 50 {
+ // break
+ }
+ count += 1
+ }
+ }
return nil
}
diff --git a/main.go b/main.go
index 48d132c..719fdf0 100644
--- a/main.go
+++ b/main.go
@@ -21,7 +21,7 @@ var resources embed.FS
var HOSTNAME string = "forge.wit.com"
var LIBDIR string = "/var/lib/forged/" // need to deprecate this
-// var FORGEDIR string = "/home/forge" // deprecated?
+var FORGEDIR string = "/home/forge" // deprecated?
func main() {
me = new(mainType)
@@ -29,6 +29,7 @@ func main() {
me.auto = prep.Bash(&argv) // this line should be: prep.Bash(&argv)
me.forge = forgepb.InitByAppname(ARGNAME)
+ me.forge.Config.DumpENV()
if err := me.forge.InitPatchsets(); err != nil {
log.Info("patches failed to open", err)