summaryrefslogtreecommitdiff
path: root/argv.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-26 08:29:43 -0500
committerJeff Carr <[email protected]>2025-10-26 08:29:43 -0500
commit4684799ca211b13b821a51cb0b3c87e43bd95aa8 (patch)
treefc23a62eed2b8d091e135c69f7e90bd6df24ff31 /argv.go
parent213d7bd6749471c583534e76f9c29c5b0183a4cb (diff)
new argv design
Diffstat (limited to 'argv.go')
-rw-r--r--argv.go108
1 files changed, 108 insertions, 0 deletions
diff --git a/argv.go b/argv.go
new file mode 100644
index 0000000..6813437
--- /dev/null
+++ b/argv.go
@@ -0,0 +1,108 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+/*
+ this parses the command line arguements
+ this enables command line options from other packages like 'gui' and 'log'
+*/
+
+var argv args
+
+type args struct {
+ Git *GitCmd `arg:"subcommand:git" help:"git stuff"`
+ Build *BuildCmd `arg:"subcommand:build" help:"build and install things"`
+ ListPkgs *EmptyCmd `arg:"subcommand:list" help:"list all the packages on mirrors.wit.com"`
+ Clone *CloneCmd `arg:"subcommand:go-clone" help:"go-clone from a gowebd repomap"`
+ Linux *LinuxCmd `arg:"subcommand:linux" help:"helpful linux things"`
+ Zoo *EmptyCmd `arg:"subcommand:zoo" help:"WIT Private Cloud info"`
+ PB *ProtoCmd `arg:"subcommand:pb" help:"example .pb files"`
+ Droplet *DropletCmd `arg:"subcommand:droplet" help:"do things on virtual machines"`
+ Upgrade *UpgradeCmd `arg:"subcommand:upgrade" help:"apt upgrade packages installed from mirrors.wit.com"`
+ Publish *PublishCmd `arg:"subcommand:publish" help:"publish packages"`
+ Test *TestCmd `arg:"subcommand:test" help:"test things"`
+ RepoMap string `arg:"--repomap" help:"location of the repomap"`
+ DryRun bool `arg:"--dry-run" help:"only show what would be packaged"`
+ Install bool `arg:"--install" help:"go install the binaries first"`
+ Verbose bool `arg:"--verbose" help:"be loud about it"`
+ Force bool `arg:"--force" help:"rebuild everything"`
+ All bool `arg:"--all" help:"show everything"`
+ Recursive bool `arg:"--recursive" help:"go-clone --recursive"`
+ WITCOM bool `arg:"--witcom" help:"add the GPL header"`
+ Max int32 `arg:"--max" help:"stop building after max builds"`
+}
+
+type BuildCmd struct {
+ Debian *DebianCmd `arg:"subcommand:deb" help:"build missing .deb packages"`
+ MacBuild *EmptyCmd `arg:"subcommand:macos" help:"build macos packages"`
+ Install *DefaultCmd `arg:"subcommand:install" help:"run make install in each repo"`
+}
+
+type ProtoCmd struct {
+ Identify string `arg:"--identify" help:"identify a .pb file"`
+}
+
+type DropletCmd struct {
+ Trim *EmptyCmd `arg:"subcommand:trim" help:"clean out stuff and power off vm"`
+}
+
+type TestCmd struct {
+ Version *EmptyCmd `arg:"subcommand:version" help:"test with cmd --version"`
+ Copy bool `arg:"--copy" help:"re-copy argv.template.go"`
+}
+
+type LinuxCmd struct {
+ Rdate *EmptyCmd `arg:"subcommand:rdate" help:"rdate: check the time from the network"`
+}
+
+type DebianCmd struct {
+ Release bool `arg:"--release" help:"use go-deb --release"`
+ DryRun bool `arg:"--dry-run" help:"only show what would be packaged"`
+ Verbose bool `arg:"--verbose" help:"be loud about it"`
+ Force bool `arg:"--force" help:"force devel .deb builds into /incoming"`
+ Priv bool `arg:"--private" help:"build private repos"`
+ All bool `arg:"--all" help:"build everything again"`
+ BuildVersion int `arg:"--buildversion" help:"the build version"`
+ Arch string `arg:"--arch" help:"what arch"`
+}
+
+type CloneCmd struct {
+ Check *EmptyCmd `arg:"subcommand:check" help:"check urls against the repomap"`
+ Fix *EmptyCmd `arg:"subcommand:fix" help:"fix urls from the repomap"`
+ Repomap *EmptyCmd `arg:"subcommand:repomap" help:"make updated repomap"`
+ DryRun bool `arg:"--dry-run" help:"show what has not yet come to pass"`
+ Verbose bool `arg:"--verbose" help:"be loud about it"`
+}
+
+type UpgradeCmd struct {
+ All bool `arg:"--all" help:"show all the packages"`
+ Force bool `arg:"--force" help:"force un-install and re-install each package"`
+}
+
+type PublishCmd struct {
+ All bool `arg:"--all" help:"show all the packages"`
+ Gomod bool `arg:"--keep-gomod" help:"don't really do anything"`
+}
+
+type DefaultCmd struct {
+ DryRun bool `arg:"--dry-run" help:"show what has not yet come to pass"`
+ Verbose bool `arg:"--verbose" help:"be loud about it"`
+ Force bool `arg:"--force" help:"rebuild everything"`
+}
+
+type GitCmd struct {
+ Log *EmptyCmd `arg:"subcommand:log" help:"git log"`
+ Who *EmptyCmd `arg:"subcommand:who" help:"git who"`
+ Tag *EmptyCmd `arg:"subcommand:tag" help:"show tags"`
+ Pull *EmptyCmd `arg:"subcommand:pull" help:"pull the wit standard paths"`
+ Push *EmptyCmd `arg:"subcommand:push" help:"push the wit standard paths"`
+ Template string `arg:"--template" help:"create a new reup from a tempalte"`
+ Create string `arg:"--create" help:"create new repo"`
+ Edit string `arg:"--edit" help:"edit the subject of the last commit"`
+ ChopHEAD int `arg:"--chop-head-off" help:"remove the last commit (HEAD-1)"`
+ DeleteUntracked bool `arg:"--delete-untracked" help:"delete the untracked files"`
+}
+
+type EmptyCmd struct {
+}