summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--argv.go3
-rw-r--r--complete.go49
-rw-r--r--doMode.go5
-rw-r--r--doNormal.go9
-rw-r--r--main.go1
-rw-r--r--resources/generate1
6 files changed, 54 insertions, 14 deletions
diff --git a/argv.go b/argv.go
index ab5e83d..c7d5eeb 100644
--- a/argv.go
+++ b/argv.go
@@ -94,7 +94,8 @@ type ModeCmd struct {
User *EmptyCmd `arg:"subcommand:user" help:"use user branches"`
Normal *EmptyCmd `arg:"subcommand:normal" help:"use the 'normal' forge development mode"`
Clean *EmptyCmd `arg:"subcommand:clean" help:"clean mode. removes everything to origin/HEAD"`
- Config *EmptyCmd `arg:"subcommand:config" help:"select which config to use"`
+ Config string `arg:"--config" help:"select which config to use"`
+ // Config *EmptyCmd `arg:"subcommand:config" help:"select which config to use"`
}
type CommitCmd struct {
diff --git a/complete.go b/complete.go
index 0cd7513..191cf90 100644
--- a/complete.go
+++ b/complete.go
@@ -5,10 +5,13 @@ package main
import (
"fmt"
+ "os"
+ "path/filepath"
"strings"
"go.wit.com/dev/alexflint/arg"
"go.wit.com/gui"
+ "go.wit.com/lib/config"
"go.wit.com/lib/debugger"
"go.wit.com/lib/env"
"go.wit.com/lib/fhelp"
@@ -93,31 +96,51 @@ func (c CleanCmd) Match(partial string) []string {
// sends the strings to bash or zsh that will be your options
func (a args) DoAutoComplete() error {
- if argvpb.PB.IsMatch("mode.config") {
- matches := []string{"mine", "favorites"}
- fmt.Fprintf(argvpb.Stdout, strings.Join(matches, " "))
+ var err error
+ if me.pp == nil {
+ me.pp, err = arg.ParseFlagsArgv(&argv)
+ if err != nil {
+ fmt.Fprintf(argvpb.Stderr, "returned from parseFlagsArgv(%v)\n", err)
+ }
+ }
+ if argvpb.PB.IsMatch("mode.--config") {
+ matches, _ := matchModeDirs()
+ fmt.Fprintf(argvpb.Stdout, matches)
return nil
}
if argvpb.PB.IsMatch("mode") {
- matches := []string{"once", "many", "mine", "favorites"}
- fmt.Fprintf(argvpb.Stdout, strings.Join(matches, " "))
+ err = me.pp.WriteHelpForAutocomplete("", "mode")
+ matches := []string{"jwc", "false"}
+ fmt.Fprintf(argvpb.Stdout, " "+strings.Join(matches, " "))
return nil
}
if argvpb.PB.GetCmd() == "" {
// these are base autocomplete strings
matches := []string{"clean", "commit", "merge", "patch", "normal", "pull", "rebuild", "generate", "config"}
matches = append(matches, "show", "add", "fixer", "dev", "verify", "mode", "gui", "whatchanged")
- matches = append(matches, "--version", "--force", "--all")
+ matches = append(matches, "--version", "--force", "--all", "--verbose")
fmt.Fprintf(argvpb.Stdout, strings.Join(matches, " "))
return nil
}
- var err error
- if me.pp == nil {
- me.pp, err = arg.ParseFlagsArgv(&argv)
- fmt.Fprintf(argvpb.Stderr, "returned from parseFlagsArgv(%v)\n", err)
- }
err = me.pp.WriteHelpForAutocomplete(argvpb.PB.Partial, argvpb.PB.Real...)
- fmt.Fprintf(argvpb.Stderr, "returned from WriteHelpForAutocomplete() pb.Real(%v)\n", argvpb.PB.Real)
- fmt.Fprintf(argvpb.Stderr, "returned from WriteHelpForAutocomplete(%v)\n", err)
+ if err != nil {
+ fmt.Fprintf(argvpb.Stderr, "returned from WriteHelpForAutocomplete() pb.Real(%v)\n", argvpb.PB.Real)
+ fmt.Fprintf(argvpb.Stderr, "returned from WriteHelpForAutocomplete(%v)\n", err)
+ }
return err
}
+
+func matchModeDirs() (string, error) {
+ configDir, _ := os.UserConfigDir()
+ globPattern := filepath.Join(configDir, "forge", "*")
+ files, err := filepath.Glob(globPattern)
+ var match string
+ for _, file := range files {
+ if config.IsDir(file) {
+ _, base := filepath.Split(file)
+ match += base + " "
+ }
+ }
+ // log.Info("glob:", globPattern, "matchdirs:", match)
+ return match, err
+}
diff --git a/doMode.go b/doMode.go
index c65aff7..166cecc 100644
--- a/doMode.go
+++ b/doMode.go
@@ -4,6 +4,7 @@
package main
import (
+ "go.wit.com/lib/env"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/log"
)
@@ -28,6 +29,10 @@ func doMode() (string, error) {
if argv.Mode.Master != nil {
s, err = doModeMaster()
}
+ if argv.Mode.Config != "" {
+ env.Set("modeDir", argv.Mode.Config)
+ env.Save()
+ }
return s, err
}
diff --git a/doNormal.go b/doNormal.go
index e297d04..cf71d34 100644
--- a/doNormal.go
+++ b/doNormal.go
@@ -87,6 +87,7 @@ func doNormalStatus() bool {
var count int
stats := me.forge.RillRepos(checkNormalRepoState)
+ notnormal := gitpb.NewRepos()
for path, stat := range stats {
dur := stat.End.Sub(stat.Start)
if dur > 10*time.Second {
@@ -100,6 +101,7 @@ func doNormalStatus() bool {
log.Info("path deleted while running?", path)
continue
}
+ notnormal.Clone(repo)
if stat.Err == ErrorLocalDevelBranch {
if argv.Fix {
bname := repo.GetDevelBranchName()
@@ -131,6 +133,13 @@ func doNormalStatus() bool {
// log.Info("got path", path, stat.Err)
count += 1
}
+ if notnormal.Len() > 0 {
+ notnormal.SortNamespace()
+ footer := me.forge.PrintDefaultTB(notnormal)
+ log.Info("not normal repos:" + footer)
+ return false
+ }
+
if count > 0 {
log.Info("Some repos are not in a 'normal' state. error count =", count)
log.Info("TODO: list the repos here. forge patch repos?")
diff --git a/main.go b/main.go
index b3c6727..457d574 100644
--- a/main.go
+++ b/main.go
@@ -52,6 +52,7 @@ func main() {
}
if env.Verbose() {
env.PrintTable()
+ matchModeDirs()
}
if me.forge.IsModeUnknown() || me.forge.IsModeNewUser() {
diff --git a/resources/generate b/resources/generate
index dad3abd..79aa6c2 100644
--- a/resources/generate
+++ b/resources/generate
@@ -8,6 +8,7 @@
go.wit.com/apps/utils/fixup
go.wit.com/apps/utils/startxplacement
go.wit.com/lib/config
+go.wit.com/lib/env
go.wit.com/lib/daemons/gus
go.wit.com/lib/protobuf/argvpb
go.wit.com/lib/protobuf/bugpb