summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-09-09 08:41:15 -0500
committerJeff Carr <[email protected]>2025-09-09 08:41:15 -0500
commite629211edd82f3910cff3c3db2c272a48c01fa56 (patch)
tree37c746d27405b8ffb7adb521f7bfd1cd5ca3d731
parent49820069c91df673727bc35d1ee0da395c278d4c (diff)
make args work again
-rw-r--r--argv.go35
-rw-r--r--argvAutocomplete.go94
-rw-r--r--doDebian.go16
-rw-r--r--main.go30
4 files changed, 51 insertions, 124 deletions
diff --git a/argv.go b/argv.go
index c25659e..1f3791c 100644
--- a/argv.go
+++ b/argv.go
@@ -9,6 +9,9 @@ package main
*/
import (
+ "fmt"
+ "os"
+
"go.wit.com/lib/debugger"
"go.wit.com/lib/gui/logsettings"
"go.wit.com/log"
@@ -22,6 +25,7 @@ type args struct {
MacBuild *EmptyCmd `arg:"subcommand:macos" help:"build macos packages"`
MakeInstall *EmptyCmd `arg:"subcommand:install" help:"run make install in each repo"`
ListPkgs *EmptyCmd `arg:"subcommand:list" help:"list all the packages on mirrors.wit.com"`
+ Test *EmptyCmd `arg:"subcommand:test" help:"test build everything first"`
Clone *EmptyCmd `arg:"subcommand:repomap-clone" help:"go-clone from a gowebd repomap"`
Upgrade *EmptyCmd `arg:"subcommand:upgrade" help:"apt upgrade packages installed from mirrors.wit.com"`
RepoMap string `arg:"--repomap" help:"location of the repomap"`
@@ -30,10 +34,8 @@ type args struct {
Verbose bool `arg:"--verbose" help:"be loud about it"`
Force bool `arg:"--force" help:"rebuild everything"`
Recursive bool `arg:"--recursive" help:"go-clone --recursive"`
- Test bool `arg:"--test" help:"test build after everything else"`
WITCOM bool `arg:"--witcom" help:"add the GPL header"`
- Bash bool `arg:"--bash" help:"generate bash completion"`
- BashAuto []string `arg:"--auto-complete" help:"does the actual autocompletion"`
+ Max int32 `arg:"--max" help:"stop building after max builds"`
}
type EmptyCmd struct {
@@ -61,3 +63,30 @@ func init() {
func (args) Version() string {
return "wit-test " + VERSION + " Built on " + BUILDTIME
}
+
+/*
+ handles shell autocomplete
+*/
+
+func (a args) DoAutoComplete(argv []string) {
+ switch argv[0] {
+ case "list":
+ fmt.Println("--all --mine --favorites --private")
+ case "debian":
+ fmt.Println("--dry-run --force --release --verbose macos --max")
+ case "upgrade":
+ fmt.Println("--dry-run")
+ case "build":
+ fmt.Println("--verbose --force")
+ case "install":
+ fmt.Println("--verbose")
+ case "repomap-clone":
+ fmt.Println("--repomap")
+ default:
+ if argv[0] == ARGNAME {
+ // list the subcommands here
+ fmt.Println("--bash list build debian install repomap-clone upgrade")
+ }
+ }
+ os.Exit(0)
+}
diff --git a/argvAutocomplete.go b/argvAutocomplete.go
deleted file mode 100644
index 9d60ceb..0000000
--- a/argvAutocomplete.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
-// Use of this source code is governed by the GPL 3.0
-
-package main
-
-import (
- "fmt"
- "os"
- "strings"
-)
-
-/*
- handles shell autocomplete
-*/
-
-// used for shell auto completion
-var ARGNAME string = "wit-test" // todo: get this from $0 ?
-
-func (args) doBashAuto() {
- argv.doBashHelp()
- switch argv.BashAuto[0] {
- case "list":
- fmt.Println("--all --mine --favorites --private")
- case "debian":
- fmt.Println("--dry-run")
- case "upgrade":
- fmt.Println("--dry-run")
- case "build":
- fmt.Println("--verbose")
- case "install":
- fmt.Println("--verbose")
- case "repomap-clone":
- fmt.Println("--repomap")
- default:
- if strings.HasSuffix(argv.BashAuto[0], ARGNAME) {
- // list the subcommands here
- fmt.Println("--bash list build debian install repomap-clone upgrade")
- }
- }
- os.Exit(0)
-}
-
-// prints help to STDERR // TODO: move everything below this to go-args
-func (args) doBashHelp() {
- if argv.BashAuto[1] != "''" {
- // if this is not blank, then the user has typed something
- return
- }
- if argv.BashAuto[0] != ARGNAME {
- // if this is not the name of the command, the user already started doing something
- return
- }
- if argv.BashAuto[0] == ARGNAME {
- // me.argpp.WriteHelp(os.Stderr)
- // return
- }
- fmt.Fprintln(os.Stderr, "")
- fmt.Fprintln(os.Stderr, "list: show every package on mirrors.wit.com")
- fmt.Fprintln(os.Stderr, "build: go build every package that identifies as a binary")
- fmt.Fprintln(os.Stderr, "install: go install every package into ~/go/bin")
- fmt.Fprintln(os.Stderr, "repomap-clone: go-clone every package from a gowebd repomap")
- fmt.Fprintln(os.Stderr, "")
-}
-
-// complete -F forge --bash forge
-func (args) doBash() {
- fmt.Println("# add this in your bashrc:")
- fmt.Println("")
- fmt.Println("# todo: add this to go-arg as a 'hidden' go-arg option --bash")
- fmt.Println("#")
- fmt.Println("# todo: make this output work/parse with:")
- fmt.Println("# complete -C " + ARGNAME + " --bash go")
- fmt.Println("")
- fmt.Println("_" + ARGNAME + "_complete()")
- fmt.Println("{")
- fmt.Println(" # sets local to this func vars")
- fmt.Println(" local cur prev all")
- fmt.Println(" cur=${COMP_WORDS[COMP_CWORD]}")
- fmt.Println(" prev=${COMP_WORDS[COMP_CWORD-1]}")
- fmt.Println(" all=${COMP_WORDS[@]}")
- fmt.Println("")
- fmt.Println(" # this is where we generate the go-arg output")
- fmt.Println(" GOARGS=$(" + ARGNAME + " --auto-complete $prev \\'$cur\\' $all)")
- fmt.Println("")
- fmt.Println(" # this compares the command line input from the user")
- fmt.Println(" # to whatever strings we output")
- fmt.Println(" COMPREPLY=( $(compgen -W \"$GOARGS\" -- $cur) ) # THIS WORKS")
- fmt.Println(" return 0")
- fmt.Println("}")
- fmt.Println("complete -F _" + ARGNAME + "_complete " + ARGNAME)
- fmt.Println("")
- fmt.Println("# copy and paste the above into your bash shell should work")
- os.Exit(0)
-}
diff --git a/doDebian.go b/doDebian.go
index 219a80b..4ff6e53 100644
--- a/doDebian.go
+++ b/doDebian.go
@@ -15,11 +15,15 @@ func buildDeb() {
log.DaemonMode(true)
defer log.DaemonMode(false)
- if err := doInstall(); err != nil {
- log.Info("doInstall() failed", err)
- badExit(err)
+ if argv.Test != nil {
+ if err := doInstall(); err != nil {
+ log.Info("doInstall() failed", err)
+ badExit(err)
+ }
}
+ var counter int
+
all := me.forge.Repos.SortByFullPath()
for all.Scan() {
var cmd []string
@@ -67,6 +71,12 @@ func buildDeb() {
}
}
+ counter += 1
+
+ if counter > int(argv.Max) {
+ okExit("did --max builds")
+ }
+
/*
build-darwin:
GOOS=darwin GOARCH=amd64 GO111MODULE=off go build -v -o go-clone-darwin.x86 \
diff --git a/main.go b/main.go
index 0028c3d..ea2f6b9 100644
--- a/main.go
+++ b/main.go
@@ -11,7 +11,7 @@ import (
"unicode"
"go.wit.com/dev/alexflint/arg"
- "go.wit.com/lib/gui/shell"
+ "go.wit.com/lib/gui/prep"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/lib/protobuf/zoopb"
@@ -22,22 +22,19 @@ import (
var VERSION string
var BUILDTIME string
+// used for shell auto completion
+var ARGNAME string = "wit-test" // todo: get this from $0 ?
+
var failed map[*gitpb.Repo]string
var state map[*gitpb.Repo]string
var debnames map[*gitpb.Repo]string
func main() {
me = new(autoType)
+ prep.Bash(ARGNAME, argv.DoAutoComplete) // todo: this line should be: prep.Bash(argv)
+ // me.myGui = prep.Gui() // prepares the GUI package for go-args
me.argpp = arg.MustParse(&argv)
- if argv.Bash {
- argv.doBash()
- os.Exit(0)
- }
- if len(argv.BashAuto) != 0 {
- argv.doBashAuto()
- os.Exit(0)
- }
dumpDebug()
failed = make(map[*gitpb.Repo]string)
@@ -120,21 +117,6 @@ func main() {
okExit("EVERYTHING BUILT!")
}
- if argv.Test {
- homeDir, _ := os.UserHomeDir()
-
- testdir := filepath.Join(homeDir, "go/src/go.wit.com/apps/utils/wit-utils/go-clone-test/")
- os.Chdir(testdir)
- shell.RunRealtime([]string{"go", "install"})
-
- workdir := filepath.Join(homeDir, "gowork")
- if err := os.MkdirAll(workdir, os.ModePerm); err != nil {
- badExit(err)
- }
- os.Chdir(workdir)
- shell.RunRealtime([]string{"go-clone-test"})
- }
-
okExit("everything compiled")
}