diff options
| author | Jeff Carr <[email protected]> | 2025-10-26 10:39:12 -0500 | 
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-26 10:39:12 -0500 | 
| commit | 2a466a788a0f78dddce2ca544db6e34f0b8e2f12 (patch) | |
| tree | 82e63ef0eb49a1601eb45d03a52a2c1a919cc6bd | |
| parent | 9e2da246d52558670685ffe86c25787b55c6b4a6 (diff) | |
| parent | 0653bd60ce9276ad6245b25c60f37aefd0d1408a (diff) | |
Merge branch 'jcarr' into devel
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | argv.custom.go | 29 | ||||
| -rw-r--r-- | argv.struct.go | 15 | ||||
| -rw-r--r-- | main.go | 14 | ||||
| -rw-r--r-- | parseArgvStruct.go | 32 | ||||
| -rw-r--r-- | resources/README.md | 1 | ||||
| -rw-r--r-- | structs.go | 17 | 
7 files changed, 109 insertions, 0 deletions
@@ -3,3 +3,4 @@ go.*  *.patch  *.mbox  *.pb.go +argv diff --git a/argv.custom.go b/argv.custom.go new file mode 100644 index 0000000..c6774a5 --- /dev/null +++ b/argv.custom.go @@ -0,0 +1,29 @@ +// Copyright 2017-2025 WIT.COM Inc. All rights reserved. +// Use of this source code is governed by the GPL 3.0 + +package main + +import ( +	"os" + +	"go.wit.com/lib/protobuf/argvpb" +) + +// sent via -ldflags +var VERSION string +var BUILDTIME string + +// used for shell auto completion +var APPNAME string = "mirrors" // todo: get this from $0 + +// sends the strings to bash or zsh that will be your options +func (a args) SendCompletionStrings(pb *argvpb.Argv) { +	base := []string{"--dry-run", "--force", "incoming", "walk", "list", "everything", "verify", "newest", "--create", "--verbose", "release"} + +	if pb.GetCmd() == "" { +		pb.SendStrings(base) +	} else { +		pb.SubCommand(pb.Goargs...) +	} +	os.Exit(0) +} diff --git a/argv.struct.go b/argv.struct.go new file mode 100644 index 0000000..4a1db02 --- /dev/null +++ b/argv.struct.go @@ -0,0 +1,15 @@ +// Copyright 2017-2025 WIT.COM Inc. All rights reserved. +// Use of this source code is governed by the GPL 3.0 + +package main + +var argv args + +type args struct { +	Test    *EmptyCmd `arg:"subcommand:test"               help:"test"` +	Verbose bool      `arg:"--verbose"                     help:"be loud about it"` +	Force   bool      `arg:"--force"                       help:"rebuild everything"` +} + +type EmptyCmd struct { +} @@ -0,0 +1,14 @@ +package main + +import ( +	"embed" +) + +//go:embed resources/* +var resources embed.FS + +func main() { +	me = new(mainType) + +	parseArgvStruct() +} diff --git a/parseArgvStruct.go b/parseArgvStruct.go new file mode 100644 index 0000000..d8ef1ac --- /dev/null +++ b/parseArgvStruct.go @@ -0,0 +1,32 @@ +package main + +import ( +	"bufio" +	"os" +	"strings" + +	"go.wit.com/lib/protobuf/argvpb" +	"go.wit.com/log" +) + +func parseArgvStruct() (*argvpb.Argv, error) { +	file, err := os.Open("argv.struct.go") +	if err != nil { +		return nil, err +	} + +	pb := argvpb.NewArgvs() + +	scanner := bufio.NewScanner(file) +	for scanner.Scan() { +		line := scanner.Text() +		line = strings.TrimSpace(line) +		log.Info("LINE:", line) +		parts := strings.Fields(line) +		if len(parts) > 0 { +			pb.Fast = true +		} +	} + +	return pb, nil +} diff --git a/resources/README.md b/resources/README.md new file mode 100644 index 0000000..1b50248 --- /dev/null +++ b/resources/README.md @@ -0,0 +1 @@ +# a binary to help with bash autocomplete diff --git a/structs.go b/structs.go new file mode 100644 index 0000000..d295f3c --- /dev/null +++ b/structs.go @@ -0,0 +1,17 @@ +package main + +import ( +	"go.wit.com/dev/alexflint/arg" +	"go.wit.com/lib/protobuf/argvpb" +) + +var me *mainType + +// this app's variables +type mainType struct { +	argv *argvpb.Argv // more experiments for bash handling +	pp   *arg.Parser  // for parsing the command line args.  Yay to alexf lint! +	// myGui *fhelp.GuiPrep  // for initializing the GUI toolkits +	// forge *forgepb.Forge  // your customized repo preferences and settings +	// pb    *zoopb.Packages // the mirrors packages +}  | 
