summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-26 10:39:12 -0500
committerJeff Carr <[email protected]>2025-10-26 10:39:12 -0500
commit2a466a788a0f78dddce2ca544db6e34f0b8e2f12 (patch)
tree82e63ef0eb49a1601eb45d03a52a2c1a919cc6bd
parent9e2da246d52558670685ffe86c25787b55c6b4a6 (diff)
parent0653bd60ce9276ad6245b25c60f37aefd0d1408a (diff)
Merge branch 'jcarr' into devel
-rw-r--r--.gitignore1
-rw-r--r--argv.custom.go29
-rw-r--r--argv.struct.go15
-rw-r--r--main.go14
-rw-r--r--parseArgvStruct.go32
-rw-r--r--resources/README.md1
-rw-r--r--structs.go17
7 files changed, 109 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 3429a71..a7de4f6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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 {
+}
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..70d95a6
--- /dev/null
+++ b/main.go
@@ -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
+}