summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rw-r--r--argv.go3
-rw-r--r--list.go110
3 files changed, 102 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index 0b8ffdf..6b13981 100644
--- a/Makefile
+++ b/Makefile
@@ -40,6 +40,11 @@ list: build
reset
./forge --list
+list-real: build
+ reset
+ ./forge --list --real
+
+
list-config: build
./forge --list-conf
diff --git a/argv.go b/argv.go
index 81668c1..71959a2 100644
--- a/argv.go
+++ b/argv.go
@@ -15,8 +15,9 @@ type args struct {
Pull bool `arg:"--git-pull" help:"run 'git pull' on all your repos"`
Build bool `arg:"--build" default:"true" help:"also try to build it"`
Install bool `arg:"--install" help:"try to install every binary package"`
- RedoGoMod bool `arg:"--go-reset" help:"remake all the go.sum and go.mod files"`
+ RedoGoMod bool `arg:"--RedoGoMod" help:"remake all the go.sum and go.mod files"`
DryRun bool `arg:"--dry-run" help:"show what would be run"`
+ Real bool `arg:"--real" help:"do the change, save config & exit"`
}
func (args) Version() string {
diff --git a/list.go b/list.go
index 646db57..e475d95 100644
--- a/list.go
+++ b/list.go
@@ -4,6 +4,7 @@ import (
"fmt"
"os"
+ "go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
@@ -17,25 +18,24 @@ func list() {
repos := me.forge.Repos.SortByGoPath()
for repos.Scan() {
repo := repos.Next()
- var rtype string
- if !repo.IsValid() {
- rtype = "rm?"
- continue
- } else {
- rtype = repo.RepoType()
- }
- if me.forge.IsReadOnly(repo.GetGoPath()) {
- continue
- }
var end string
if repo.CheckDirty() {
end += "(dirty) "
}
- mver := repo.GetMasterVersion()
- dver := repo.GetDevelVersion()
- uver := repo.GetUserVersion()
- s := fmt.Sprintf("%-50s %-8s %-10s %-10s %-10s", repo.GetGoPath(), rtype, mver, dver, uver)
- log.Info(s, end)
+ s := make(map[string]string)
+ if !verify(repo, s) {
+ log.Info("going to delete", repo.GoPath)
+ if argv.Real {
+ me.forge.Repos.DeleteByGoPath(repo.GetGoPath())
+ me.forge.Repos.ConfigSave()
+ } else {
+ log.Info("need argv --real to delete", repo.GoPath)
+ }
+ os.Exit(0)
+ }
+ start := fmt.Sprintf("%-50s %-8s %-10s %-10s %-10s %-10s", s["gopath"], s["rtype"], s["mver"], s["dver"], s["uver"], s["cver"])
+ end += fmt.Sprintf("(%s,%s,%s,%s) ", s["mname"], s["dname"], s["uname"], s["cname"])
+ log.Info(start, end)
}
os.Exit(0)
}
@@ -50,3 +50,83 @@ func list() {
os.Exit(0)
}
}
+
+func whichOne(repo *gitpb.Repo, a map[string]any, hmm string) any {
+ return nil
+}
+
+func updateRepo(repo *gitpb.Repo, a map[string]any) bool {
+ return false
+}
+
+func Delete(repo *gitpb.Repo, s map[string]string) bool {
+ if repo.Published == nil {
+ log.Info("published is nil", repo.Published)
+ } else {
+ log.Info("published len", repo.Published.Len())
+ }
+
+ // add a new one here
+ newr := gitpb.Repo{
+ FullPath: repo.FullPath,
+ GoPath: repo.GoPath,
+ URL: repo.URL,
+ Tags: repo.Tags,
+ LastPull: repo.LastPull,
+ MasterBranchName: repo.MasterBranchName,
+ DevelBranchName: repo.DevelBranchName,
+ UserBranchName: repo.UserBranchName,
+ GoLibrary: repo.GoLibrary,
+ GoBinary: repo.GoBinary,
+ GoPrimitive: repo.GoPrimitive,
+ GoPlugin: repo.GoPlugin,
+ GoDeps: repo.GoDeps,
+ LastGoDep: repo.LastGoDep,
+ Dirty: repo.Dirty,
+ Published: repo.Published,
+ TargetVersion: repo.TargetVersion,
+ ReadOnly: repo.ReadOnly,
+ GoProtobuf: repo.GoProtobuf,
+ }
+ if argv.Real {
+ me.forge.Repos.AppendUniqueGoPath(&newr)
+ }
+ return true
+}
+
+func verify(repo *gitpb.Repo, s map[string]string) bool {
+ if ! repo.IsValid() {
+ return false
+ }
+ s["gopath"] = repo.GetGoPath()
+ s["rtype"] = repo.RepoType()
+
+ s["mname"] = repo.GetMasterBranchName()
+ if s["mname"] == "" {
+ log.Info("verify() no master branch name")
+ return false
+ }
+ // only verify the master branch name with read-only repos
+ if me.forge.IsReadOnly(repo.GoPath) {
+ return true
+ }
+
+ s["dname"] = repo.GetDevelBranchName()
+ if s["dname"] == "" {
+ log.Info("verify() no devel branch name")
+ return false
+ }
+ s["uname"] = repo.GetUserBranchName()
+ if s["uname"] == "" {
+ log.Info("verify() no user branch name")
+ return false
+ }
+ s["cname"] = repo.GetCurrentBranchName()
+
+ s["mver"] = repo.GetMasterVersion()
+ s["dver"] = repo.GetDevelVersion()
+ s["uver"] = repo.GetUserVersion()
+ s["cver"] = repo.GetCurrentBranchVersion()
+
+ return true
+}