summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--forgeConfig/main.go4
-rw-r--r--human.go9
-rw-r--r--settings.go66
3 files changed, 58 insertions, 21 deletions
diff --git a/forgeConfig/main.go b/forgeConfig/main.go
index 739fa8b..ccb3596 100644
--- a/forgeConfig/main.go
+++ b/forgeConfig/main.go
@@ -16,13 +16,17 @@ func main() {
log.Warn("forgepb.ConfigLoad() failed", err)
os.Exit(-1)
}
+
if argv.List {
+ repos.PrintTable()
+ /*
log.Info(forgepb.RepoHeader())
loop := repos.SortByPath() // get the list of repos
for loop.Scan() {
r := loop.Repo()
log.Info("repo:", r.GoPath)
}
+ */
os.Exit(0)
}
diff --git a/human.go b/human.go
index 393e9a3..66d1211 100644
--- a/human.go
+++ b/human.go
@@ -14,12 +14,8 @@ import (
// so reporting tables of the status of what droplets and hypervisors
// are in text columns and rows that can be easily read in a terminal
-func RepoHeader() string {
- return "Name Path"
-}
-
func standardHeader() string {
- return fmt.Sprintf("%-4s %40s %s", "r/w", "Path", "flags")
+ return fmt.Sprintf("%-4s %-40s %s", "", "Path", "flags")
}
func (all *Repos) standardHeader(r *Repo) string {
@@ -28,6 +24,9 @@ func (all *Repos) standardHeader(r *Repo) string {
if all.IsPrivate(r.GoPath) {
flags += "(private) "
}
+ if all.IsFavorite(r.GoPath) {
+ flags += "(favorite) "
+ }
if all.IsReadOnly(r.GoPath) {
readonly = ""
} else {
diff --git a/settings.go b/settings.go
index e5bc65c..f40bdb4 100644
--- a/settings.go
+++ b/settings.go
@@ -84,6 +84,30 @@ func (all *Repos) IsReadOnly(gopath string) bool {
return true
}
+// returns the deb package name
+// this let's you check a git tag version against a package .deb version
+// allows gopath's to not need to match the .deb name
+// this is important in lots of cases! It is normal and happens often enough.
+func (all *Repos) DebName(gopath string) string {
+ // get "zookeeper" from "go.wit.com/apps/zookeeper"
+ normalBase := filepath.Base(gopath)
+
+ loop := all.SortByPath()
+ for loop.Scan() {
+ r := loop.Repo()
+ if r.GoPath == gopath {
+ // returns "zookeeper-go" for "go.wit.com/apps/zookeeper"
+ if r.DebName != "" {
+ // log.Info("FOUND DebName", r.DebName)
+ return r.DebName
+ } else {
+ return normalBase
+ }
+ }
+ }
+ return normalBase
+}
+
// is this a non-publishable repo?
// matches package names from apt
//
@@ -131,26 +155,36 @@ func (all *Repos) IsPrivate(thing string) bool {
return match.Private
}
-// returns the deb package name
-// this let's you check a git tag version against a package .deb version
-// allows gopath's to not need to match the .deb name
-// this is important in lots of cases! It is normal and happens often enough.
-func (all *Repos) DebName(gopath string) string {
- // get "zookeeper" from "go.wit.com/apps/zookeeper"
- normalBase := filepath.Base(gopath)
+// IsFavorite() -- fun option for the config
+// file that lets you set things as favorites
+// so you can just go-clone a bunch of common things
+// on a new box or after you reset/delete your ~/go/src dir
+func (all *Repos) IsFavorite(thing string) bool {
+ var match *Repo
- loop := all.SortByPath()
+ loop := all.SortByPath() // get the list of repos
for loop.Scan() {
r := loop.Repo()
- if r.GoPath == gopath {
- // returns "zookeeper-go" for "go.wit.com/apps/zookeeper"
- if r.DebName != "" {
- // log.Info("FOUND DebName", r.DebName)
- return r.DebName
- } else {
- return normalBase
+ if r.GoPath == thing {
+ if r.Favorite {
+ return true
+ }
+ }
+ base := filepath.Base(r.GoPath)
+ if base == thing {
+ if r.Favorite {
+ return true
+ }
+ }
+ if r.Directory {
+ if strings.HasPrefix(thing, r.GoPath) {
+ match = r
}
}
}
- return normalBase
+ if match == nil {
+ return false
+ }
+
+ return match.Favorite
}