diff options
| author | Jeff Carr <[email protected]> | 2025-01-06 20:57:52 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-01-06 20:57:52 -0600 |
| commit | 38c0ec7caadcfa51baf364b76cda14e2c656d0ee (patch) | |
| tree | 7dee515d715171083ff7764d44e0034aab0f8430 /find.go | |
| parent | 2ffc60a5d4be1864d931082522bcf5c76431b090 (diff) | |
move config handling here
Diffstat (limited to 'find.go')
| -rw-r--r-- | find.go | 100 |
1 files changed, 100 insertions, 0 deletions
@@ -0,0 +1,100 @@ +package main + +import ( + "go.wit.com/lib/protobuf/gitpb" +) + +// this populates a slice of protobuf records representing each git repo +// var me.found []*gitpb.Repo +// +// so, it makes a subset of repos that are then used performing actions on +// +// by default, it adds every repo + +func (f *FindCmd) findRepos() { + if f == nil { + findMine() + return + } + + if f.All { + findAll() + return + } + + if f.Private { + findPrivate() + return + } + + if f.Mine { + findMine() + return + } + + if f.Favorites { + findFavorites() + return + } + + if f.Dirty { + findDirty() + return + } + + findAll() +} + +func findPrivate() { + all := me.forge.Repos.SortByFullPath() + for all.Scan() { + repo := all.Next() + if me.forge.Config.IsPrivate(repo.GetGoPath()) { + me.found.AppendUniqueGoPath(repo) + } + } +} + +// finds repos that are writable +func findMine() { + // log.Printf("get mine %s\n", me.forge.GetGoSrc()) + all := me.forge.Repos.SortByFullPath() + for all.Scan() { + repo := all.Next() + if me.forge.Config.IsWritable(repo.GetGoPath()) { + me.found.AppendUniqueGoPath(repo) + } + } +} + +// finds repos the user has marked as favorites in the forge .config +func findFavorites() { + // log.Printf("get favorites %s\n", me.forge.GetGoSrc()) + all := me.forge.Repos.SortByFullPath() + for all.Scan() { + repo := all.Next() + if me.forge.Config.IsFavorite(repo.GetGoPath()) { + me.found.AppendUniqueGoPath(repo) + } + } +} + +// finds repos that git is reporting as dirty +func findDirty() { + all := me.forge.Repos.SortByFullPath() + for all.Scan() { + var repo *gitpb.Repo + repo = all.Next() + if repo.IsDirty() { + me.found.AppendUniqueGoPath(repo) + } + } +} + +func findAll() { + all := me.forge.Repos.SortByFullPath() + for all.Scan() { + repo := all.Next() + me.found.AppendUniqueGoPath(repo) + } +} |
