diff options
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) + } +} |
