summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-12-03 00:33:17 -0600
committerJeff Carr <[email protected]>2024-12-03 00:33:17 -0600
commit659bed891bc1aff56bc87e2de663fb63d2b1b81a (patch)
treeef294fe40fb329edb4737148167da77f5d0663a8
parent10193b77f2e25cffaf37b7d3d287506a210d29ed (diff)
start making this tool useful
-rw-r--r--Makefile10
-rw-r--r--argv.go5
-rw-r--r--delete.go41
-rw-r--r--list.go81
-rw-r--r--main.go2
-rw-r--r--scan.go9
6 files changed, 88 insertions, 60 deletions
diff --git a/Makefile b/Makefile
index 6b13981..53e694b 100644
--- a/Makefile
+++ b/Makefile
@@ -42,11 +42,19 @@ list: build
list-real: build
reset
- ./forge --list --real
+ ./forge --list --fix
+list-readonly: build
+ reset
+ ./forge --list --readonly
list-config: build
./forge --list-conf
+scan: build
+ reset
+ ./forge --scan
+
+
mine: build
./forge --mine
diff --git a/argv.go b/argv.go
index 71959a2..8fe0b64 100644
--- a/argv.go
+++ b/argv.go
@@ -9,7 +9,8 @@ var argv args
type args struct {
List bool `arg:"--list" help:"list found repos"`
ListConf bool `arg:"--list-conf" help:"list your .config/forge/ configuration"`
- ReadOnly bool `arg:"--read-only" help:"include read-only repos"`
+ Scan bool `arg:"--scan" help:"rescan your repos"`
+ ReadOnly bool `arg:"--readonly" help:"include read-only repos"`
GetMine bool `arg:"--mine" help:"download private and writeable repos"`
GetFav bool `arg:"--favorites" help:"download repos marked as favorites"`
Pull bool `arg:"--git-pull" help:"run 'git pull' on all your repos"`
@@ -17,7 +18,7 @@ type args struct {
Install bool `arg:"--install" help:"try to install every binary package"`
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"`
+ Real bool `arg:"--fix" help:"fix config, save config & exit"`
}
func (args) Version() string {
diff --git a/delete.go b/delete.go
new file mode 100644
index 0000000..a2180ac
--- /dev/null
+++ b/delete.go
@@ -0,0 +1,41 @@
+package main
+
+import (
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+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
+}
diff --git a/list.go b/list.go
index e475d95..e9f9476 100644
--- a/list.go
+++ b/list.go
@@ -9,6 +9,7 @@ import (
)
func list() {
+ log.DaemonMode(true)
if argv.ListConf {
me.forge.ConfigPrintTable()
os.Exit(0)
@@ -18,24 +19,7 @@ func list() {
repos := me.forge.Repos.SortByGoPath()
for repos.Scan() {
repo := repos.Next()
- var end string
- if repo.CheckDirty() {
- end += "(dirty) "
- }
- 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)
+ verifyPrint(repo)
}
os.Exit(0)
}
@@ -51,51 +35,32 @@ func list() {
}
}
-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())
+func verifyPrint(repo *gitpb.Repo) {
+ var end string
+ if repo.CheckDirty() {
+ end += "(dirty) "
}
-
- // 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,
+ 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)
}
- if argv.Real {
- me.forge.Repos.AppendUniqueGoPath(&newr)
+ if me.forge.IsReadOnly(repo.GoPath) && ! argv.ReadOnly {
+ return
}
- return true
+ start := fmt.Sprintf("%-40s %-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)
}
func verify(repo *gitpb.Repo, s map[string]string) bool {
- if ! repo.IsValid() {
+ if !repo.IsValid() {
return false
}
s["gopath"] = repo.GetGoPath()
@@ -104,10 +69,12 @@ func verify(repo *gitpb.Repo, s map[string]string) bool {
s["mname"] = repo.GetMasterBranchName()
if s["mname"] == "" {
log.Info("verify() no master branch name")
+ s["mver"] = repo.GetMasterVersion()
return false
}
// only verify the master branch name with read-only repos
if me.forge.IsReadOnly(repo.GoPath) {
+ s["mver"] = repo.GetMasterVersion()
return true
}
diff --git a/main.go b/main.go
index e109bd1..e7dc710 100644
--- a/main.go
+++ b/main.go
@@ -28,6 +28,8 @@ func main() {
// processes any --list like options
// may exit
list()
+ scan()
+ os.Exit(0)
if argv.RedoGoMod {
repos := me.forge.Repos.SortByGoPath()
diff --git a/scan.go b/scan.go
new file mode 100644
index 0000000..cb1dcd0
--- /dev/null
+++ b/scan.go
@@ -0,0 +1,9 @@
+package main
+
+func scan() {
+ if !argv.Scan {
+ return
+ }
+ me.forge.ScanGoSrc()
+ list()
+}