summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doCheckout.go24
-rw-r--r--doCommit.go10
-rw-r--r--doFind.go52
-rw-r--r--doGui.go19
-rw-r--r--doPatch.go6
-rw-r--r--main.go4
-rw-r--r--structs.go44
-rw-r--r--windowFound.go4
-rw-r--r--windowReposNew.go7
9 files changed, 80 insertions, 90 deletions
diff --git a/doCheckout.go b/doCheckout.go
index 49c11f9..50feaf7 100644
--- a/doCheckout.go
+++ b/doCheckout.go
@@ -130,16 +130,16 @@ func doAllCheckoutUser() error {
log.Printf("User branch check. %d total repos. (%d ok) (%d not on user branch) (%s)\n", total, count, nope, shell.FormatDuration(time.Since(now)))
if err != nil {
// display all repos not on user
- me.found = new(gitpb.Repos)
+ found := new(gitpb.Repos)
all := me.forge.Repos.SortByFullPath()
for all.Scan() {
repo := all.Next()
if repo.GetCurrentBranchName() != repo.GetUserBranchName() {
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
}
}
- me.forge.PrintHumanTable(me.found)
- log.Printf("There are %d repos that are NOT on the user branch\n", me.found.Len())
+ me.forge.PrintHumanTable(found)
+ log.Printf("There are %d repos that are NOT on the user branch\n", found.Len())
return err
}
return nil
@@ -172,16 +172,16 @@ func doAllCheckoutDevel() error {
log.Printf("Devel branch check. %d total repos. (%d ok) (%d not on devel branch) (%s)\n", total, count, nope, shell.FormatDuration(time.Since(now)))
if err != nil {
// display all repos not on user
- me.found = new(gitpb.Repos)
+ found := new(gitpb.Repos)
all := me.forge.Repos.SortByFullPath()
for all.Scan() {
repo := all.Next()
if repo.GetCurrentBranchName() != repo.GetDevelBranchName() {
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
}
}
- me.forge.PrintHumanTable(me.found)
- log.Printf("There are %d repos that are NOT on the devel branch\n", me.found.Len())
+ me.forge.PrintHumanTable(found)
+ log.Printf("There are %d repos that are NOT on the devel branch\n", found.Len())
return err
}
return nil
@@ -239,16 +239,16 @@ func doAllCheckoutMaster() error {
log.Printf("Master branch check. %d total repos. (%d ok) (%d not on master branch) (%s)\n", total, count, nope, shell.FormatDuration(time.Since(now)))
if err != nil {
// display all repos not on master
- me.found = new(gitpb.Repos)
+ found := new(gitpb.Repos)
all := me.forge.Repos.SortByFullPath()
for all.Scan() {
repo := all.Next()
if repo.GetCurrentBranchName() != repo.GetMasterBranchName() {
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
}
}
- me.forge.PrintHumanTable(me.found)
- log.Printf("There are %d repos that are NOT on the master branch\n", me.found.Len())
+ me.forge.PrintHumanTable(found)
+ log.Printf("There are %d repos that are NOT on the master branch\n", found.Len())
return err
}
return nil
diff --git a/doCommit.go b/doCommit.go
index b86ba31..404171a 100644
--- a/doCommit.go
+++ b/doCommit.go
@@ -45,8 +45,9 @@ func doCommit() {
}
if repo.GetCurrentBranchName() != repo.GetUserBranchName() {
- me.found.Append(repo)
- me.forge.PrintHumanTable(me.found)
+ found := new(gitpb.Repos)
+ found.Append(repo)
+ me.forge.PrintHumanTable(found)
log.Info("")
log.Info("wrong branch. Can not commit on", repo.GetCurrentBranchName())
log.Info("")
@@ -72,8 +73,9 @@ func doCommit() {
func doCommitRepo(repo *gitpb.Repo) error {
if repo.GetCurrentBranchName() != repo.GetUserBranchName() {
- me.found.Append(repo)
- me.forge.PrintHumanTable(me.found)
+ found := new(gitpb.Repos)
+ found.Append(repo)
+ me.forge.PrintHumanTable(found)
log.Info("")
log.Info("wrong branch. Can not commit on", repo.GetCurrentBranchName())
log.Info("")
diff --git a/doFind.go b/doFind.go
index c32a116..a6d4720 100644
--- a/doFind.go
+++ b/doFind.go
@@ -8,7 +8,7 @@ import (
)
// this populates a slice of protobuf records representing each git repo
-// var me.found []*gitpb.Repo
+// var found []*gitpb.Repo
//
// so, it makes a subset of repos that are then used performing actions on
//
@@ -40,8 +40,7 @@ func (f *FindCmd) findRepos() *gitpb.Repos {
}
if f.Private {
- findPrivate()
- return me.found
+ return findPrivate()
}
if f.Mine {
@@ -49,8 +48,7 @@ func (f *FindCmd) findRepos() *gitpb.Repos {
}
if f.Favorites {
- findFavorites()
- return me.found
+ return findFavorites()
}
if f.Dirty {
@@ -58,19 +56,21 @@ func (f *FindCmd) findRepos() *gitpb.Repos {
}
if f.User {
- findUser()
- return me.found
+ return findUser()
}
return findAll()
}
-func findPrivate() {
+func findPrivate() *gitpb.Repos {
+ found := gitpb.NewRepos()
for repo := range me.forge.Repos.IterByFullPath() {
if me.forge.Config.IsPrivate(repo.GetGoPath()) {
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
}
}
+
+ return found
}
// finds repos that are writable
@@ -88,19 +88,23 @@ func findMine() *gitpb.Repos {
}
// finds repos the user has marked as favorites in the forge .config
-func findFavorites() {
+func findFavorites() *gitpb.Repos {
+ found := gitpb.NewRepos()
+
// log.Printf("get favorites %s\n", me.forge.GetGoSrc())
for repo := range me.forge.Repos.IterByFullPath() {
if me.forge.Config.IsFavorite(repo.GetGoPath()) {
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
}
}
+ return found
}
// finds repos that git is reporting as dirty
func findDirty() *gitpb.Repos {
found := gitpb.NewRepos()
+
for repo := range me.forge.Repos.IterByFullPath() {
if repo.IsDirty() {
found.AppendByGoPath(repo)
@@ -117,33 +121,41 @@ func findAll() *gitpb.Repos {
return found
}
-func findUser() {
+func findUser() *gitpb.Repos {
+ found := gitpb.NewRepos()
+
for repo := range me.forge.Repos.IterByFullPath() {
if repo.GetCurrentBranchName() == repo.GetUserBranchName() {
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
}
}
+ return found
}
-func findPublishable() {
+func findPublishable() *gitpb.Repos {
+ found := gitpb.NewRepos()
+
for repo := range me.forge.Repos.IterByFullPath() {
if repo.GetTargetVersion() == "" {
continue
}
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
}
+ return found
}
func findReposWithPatches() *gitpb.Repos {
+ found := gitpb.NewRepos()
+
for repo := range me.forge.Repos.IterByFullPath() {
if repo.GetTargetVersion() != "" {
// add everything that has a target version set
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
continue
}
if repo.IsDirty() {
// always add dirty branches
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
continue
}
if repo.GetUserVersion() == "" || repo.GetUserVersion() == "uerr" {
@@ -151,7 +163,7 @@ func findReposWithPatches() *gitpb.Repos {
continue
}
if repo.GetUserVersion() != repo.GetDevelVersion() {
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
continue
}
@@ -160,10 +172,10 @@ func findReposWithPatches() *gitpb.Repos {
continue
}
if repo.GetLastTag() != repo.GetMasterVersion() {
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
repo.FindLastTag()
continue
}
}
- return me.found
+ return found
}
diff --git a/doGui.go b/doGui.go
index 382297d..d380f6c 100644
--- a/doGui.go
+++ b/doGui.go
@@ -360,7 +360,7 @@ func findMergeToDevel() *gitpb.Repos {
for repo := range me.forge.Repos.IterByFullPath() {
- // this sees if user has patches for devel. If it does, add it to me.found
+ // this sees if user has patches for devel. If it does, add it to found
if repo.CountDiffObjects(repo.GetUserBranchName(), repo.GetDevelBranchName()) > 0 {
found.AppendByGoPath(repo)
}
@@ -377,8 +377,8 @@ func findMergeToDevel() *gitpb.Repos {
log.Printf("devel branch check. %d total repos. (%d ok) (%d not on devel branch) (%s)\n", total, count, nope, shell.FormatDuration(time.Since(now)))
return found
}
-func findMergeToMaster() {
- me.found = new(gitpb.Repos)
+func findMergeToMaster() *gitpb.Repos {
+ found := new(gitpb.Repos)
all := me.forge.Repos.SortByFullPath()
for all.Scan() {
@@ -407,30 +407,31 @@ func findMergeToMaster() {
// this sees if devel has patches for master. If it does, add it to me.found
if repo.CountDiffObjects(repo.GetDevelBranchName(), repo.GetMasterBranchName()) > 0 {
- me.found.AppendByGoPath(repo)
+ found.AppendByGoPath(repo)
}
}
now := time.Now()
- if me.found.Len() == 0 {
+ if found.Len() == 0 {
log.Info("nothing to merge with master")
- return
+ return found
}
- me.forge.PrintHumanTable(me.found)
+ me.forge.PrintHumanTable(found)
// check for merges from devel
total, count, nope, _ := IsEverythingOnMaster()
log.Printf("Master branch check. %d total repos. (%d ok) (%d not on master branch) (%s)\n", total, count, nope, shell.FormatDuration(time.Since(now)))
+ return found
}
func mergeDevelToMaster(doit bool) {
- findMergeToMaster()
+ found := findMergeToMaster()
if !doit {
return
}
- all := me.found.SortByFullPath()
+ all := found.SortByFullPath()
for all.Scan() {
repo := all.Next()
log.Info("repo:", repo.GetGoPath())
diff --git a/doPatch.go b/doPatch.go
index 8198524..d025de4 100644
--- a/doPatch.go
+++ b/doPatch.go
@@ -31,12 +31,12 @@ func doPatch() error {
// if no option is given to patch, list out the
// repos that have patches ready in them
- findReposWithPatches()
- if me.found.Len() == 0 {
+ found := findReposWithPatches()
+ if found.Len() == 0 {
log.Info("you currently have no patches in your user branches")
return nil
}
- me.forge.PrintHumanTable(me.found)
+ me.forge.PrintHumanTable(found)
return nil
}
diff --git a/main.go b/main.go
index 74d12fa..e35ab46 100644
--- a/main.go
+++ b/main.go
@@ -72,7 +72,6 @@ func main() {
// load the ~/.config/forge/ config
me.forge = forgepb.Init()
- me.found = new(gitpb.Repos)
// first find the repos or gopaths to operate on
if argv.Config != nil {
@@ -179,7 +178,8 @@ func main() {
// nothing else was specified to be done,
// then just list the table to stdout
if gui.NoGui() {
- me.forge.PrintHumanTable(me.found)
+ found := doFind()
+ me.forge.PrintHumanTable(found)
okExit("")
}
diff --git a/structs.go b/structs.go
index 0470d97..a6f4cc7 100644
--- a/structs.go
+++ b/structs.go
@@ -8,7 +8,6 @@ import (
"go.wit.com/gui"
"go.wit.com/lib/gadgets"
"go.wit.com/lib/protobuf/forgepb"
- "go.wit.com/lib/protobuf/gitpb"
)
var me *mainType
@@ -26,40 +25,18 @@ type mainType struct {
pp *arg.Parser // for parsing the command line args. Yay to alexf lint!
forge *forgepb.Forge // for holding the forge protobuf files
myGui *gui.Node // the gui toolkit handle
- found *gitpb.Repos // stores the list of repos to process things on
psets *forgepb.Patchsets // the locally stored on disk patchsets
foundPaths []string // stores gopaths to act on (when doing go-clone)
configSave bool // if the config file should be saved after finishing
urlbase string // base URL
- // our view of the repositories
- // patchWin *patchesWindow
-
mainWindow *gadgets.BasicWindow
+ mainbox *gui.Node // the main box. enable/disable this
+ autoDryRun *gui.Node // checkbox for --dry-run
+ goSrcPwd *gadgets.OneLiner // what is being used as primary directory for your work
+ gitAuthor *gadgets.OneLiner // ENV GIT_AUTHOR NAME and EMAIL
- // the main box. enable/disable this
- mainbox *gui.Node
-
- // the window from the /lib/gui/gowit package
- // lw *gadgets.BasicWindow
-
- // #### Sorting options for the repolist
- // autoHidePerfect *gui.Node
- // autoHideReadOnly *gui.Node
-
- // checkbox for --dry-run
- autoDryRun *gui.Node
-
- // checkbox to enable intermittent scanning
- // if checked, it will check all your repos for changes
- autoScanReposCB *gui.Node
-
- goSrcPwd *gadgets.OneLiner // what is being used as primary directory for your work
- gitAuthor *gadgets.OneLiner // ENV GIT_AUTHOR NAME and EMAIL
- forgeMode *gui.Node // is the user in 'master', 'devel' or 'user' branches
-
- // these hold the branches that the user can switch all
- // the repositories to them
+ // these hold the branches that the user can switch all the repositories to them
newBranch *gui.Node // deprecate?
setBranchB *gui.Node // deprecate?
reposWinB *gui.Node // button that opens the repos window
@@ -67,11 +44,10 @@ type mainType struct {
repoDirtyB *gui.Node // "dirty" repos button
repoDevelMergeB *gui.Node // "merge to devel" repos button
repoWritableB *gui.Node // "what repos are writable" repos button
- // modeReleaseW *gui.Node // opens the release window
- // modePatchW *gui.Node // opens the patch window
- // modeUserW *gui.Node // opens the user/hack window
- argvCheckoutUser bool // shared between the GUI and the command line tools
- argvCheckoutDevel bool // shared between the GUI and the command line tools
- argvCheckoutMaster bool // shared between the GUI and the command line tools
+ // deprecate these
+ forgeMode *gui.Node // is the user in 'master', 'devel' or 'user' branches
+ argvCheckoutUser bool // shared between the GUI and the command line tools
+ argvCheckoutDevel bool // shared between the GUI and the command line tools
+ argvCheckoutMaster bool // shared between the GUI and the command line tools
}
diff --git a/windowFound.go b/windowFound.go
index 1dfc074..a5d838c 100644
--- a/windowFound.go
+++ b/windowFound.go
@@ -24,7 +24,7 @@ type foundWindow struct {
dirtyOL *gadgets.OneLiner
readonlyOL *gadgets.OneLiner
rw *gadgets.OneLiner
- // checkB *gui.Node
+ found *gitpb.Repos
}
func (r *foundWindow) Hidden() bool {
@@ -79,7 +79,7 @@ func (r *foundWindow) initWindow() {
}
func (r *foundWindow) listRepos() {
- for repo := range me.found.IterAll() {
+ for repo := range r.found.IterAll() {
r.addRepo(repo)
}
}
diff --git a/windowReposNew.go b/windowReposNew.go
index 68c2178..2469205 100644
--- a/windowReposNew.go
+++ b/windowReposNew.go
@@ -69,12 +69,11 @@ func makeReposWinNew() *gadgets.GenericWindow {
t.Delete()
t = nil
}
- me.found = new(gitpb.Repos)
- findReposWithPatches()
- me.forge.PrintHumanTable(me.found)
+ found := findReposWithPatches()
+ me.forge.PrintHumanTable(found)
// make the window for the first time
- t = addWindowPB(insertWin, me.found)
+ t = addWindowPB(insertWin, found)
f := func(repo *gitpb.Repo) {
log.Info("got to ReposTable.Custom() id =", repo.GetGoPath(), repo.GetCurrentVersion())
}