diff options
| author | Jeff Carr <[email protected]> | 2025-10-25 23:06:27 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-25 23:06:27 -0500 |
| commit | 1a602f3ed11e7be99f965e78dbe17088989b7612 (patch) | |
| tree | d7e1085399f04ef2edb3545d3ddda0eef92a00df /argv.go | |
| parent | a60277a0d2b0705d25dff251068e85ffe45b2f0c (diff) | |
try out these names
Diffstat (limited to 'argv.go')
| -rw-r--r-- | argv.go | 172 |
1 files changed, 172 insertions, 0 deletions
@@ -0,0 +1,172 @@ +// 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 using alex flint's go-arg +*/ + +var argv args + +type args struct { + Clean *CleanCmd `arg:"subcommand:clean" help:"'git clean' + reset repos to original state"` + Commit *CommitCmd `arg:"subcommand:commit" help:"'git commit'"` + Gui *EmptyCmd `arg:"subcommand:gui" help:"open the gui"` + Config *ConfigCmd `arg:"subcommand:config" help:"show your .config/forge/ settings"` + Merge *MergeCmd `arg:"subcommand:merge" help:"merge branches"` + Normal *EmptyCmd `arg:"subcommand:normal" help:"shortcut to 'forge mode normal'"` + Mode *ModeCmd `arg:"subcommand:mode" help:"sets the mode (hacking, merging, publishing)"` + Patch *PatchCmd `arg:"subcommand:patch" help:"work with patchsets"` + Pull *PullCmd `arg:"subcommand:pull" help:"'git pull'"` + Show *ShowCmd `arg:"subcommand:show" help:"print out things"` + Dev *DevCmd `arg:"subcommand:dev" help:"features under development"` + Add *EmptyCmd `arg:"subcommand:add" help:"Scan directores for git repos"` + Fixer *FixCmd `arg:"subcommand:fixer" help:"send in the fixer"` + Verify *VerifyCmd `arg:"subcommand:verify" help:"populate stats"` + Whatchanged *EmptyCmd `arg:"subcommand:whatchanged" help:"being deprecated (perhaps?). this is just for finger memory."` + Rebuild *RebuildCmd `arg:"subcommand:rebuild" help:"download all the forge sources and rebuild forge"` + Generate *GenerateCmd `arg:"subcommand:generate" help:"helps run autogenpb in repos with .proto files"` + All bool `arg:"--all" help:"whatever you are doing, do it all over"` + Force bool `arg:"--force" help:"try to strong-arm things"` + Verbose bool `arg:"--verbose" help:"show more output than usual"` + Fix bool `arg:"--fix" help:"try to make repairs"` +} + +type EmptyCmd struct { +} + +type testCmd string + +type ShowCmd struct { + Dirty *EmptyCmd `arg:"subcommand:dirty" help:"show dirty git repos"` + DirtySave *EmptyCmd `arg:"subcommand:dirtysave" help:"check dirty then save"` + MasterDefault *EmptyCmd `arg:"subcommand:masterdefault" help:"run the default behavior for master branches"` + Mtime *EmptyCmd `arg:"subcommand:mtime" help:"show mtime changes"` + ENV *EmptyCmd `arg:"subcommand:ENV" help:"show the ENV"` + Repo *RepoCmd `arg:"subcommand:repos" help:"print a table of the current repos"` + Tag *TagCmd `arg:"subcommand:tag" help:"show git tags"` +} + +type RebuildCmd struct { + Forge *EmptyCmd `arg:"subcommand:forge" help:"rebuild forge"` + GoClone *EmptyCmd `arg:"subcommand:go-clone" help:"rebuild go-clone"` + Autogenpb *EmptyCmd `arg:"subcommand:autogenpb" help:"rebuild autogenpb"` +} + +type FixCmd struct { + Porcelain *EmptyCmd `arg:"subcommand:porcelain" help:"git status --porcelain"` + Urls bool `arg:"--urls" help:"check for changes in repo urls"` + Untracked bool `arg:"--untracked" help:"git untracked file list"` + DeleteUser bool `arg:"--delete-user" help:"delete all user branches (checks for safety)"` + Prune bool `arg:"--prune" help:"'git fetch --prune' everywhere"` +} + +type VerifyCmd struct { + Namespace *EmptyCmd `arg:"subcommand:namespace" help:"check the namespaces"` + Stats *StatsCmd `arg:"subcommand:stats" help:"generate origin.pb"` + DryRun bool `arg:"--dry-run" help:"try not to change anything"` +} + +type StatsCmd struct { + All bool `arg:"--all" help:"process all stats"` + Sizes bool `arg:"--sizes" help:"show sizes"` + List bool `arg:"--list" help:"list all stats"` +} + +func (ShowCmd) Examples() string { + return "forge show dirty\nforge show repos --all" +} + +type RepoCmd struct { + Urls *EmptyCmd `arg:"subcommand:urls" help:"show repo urls"` + All bool `arg:"--all" help:"select every repo (the default)"` + Mine bool `arg:"--mine" help:"your repos as defined in the forge config"` + Favorites bool `arg:"--favorites" help:"your repos configured as favorites"` + Private bool `arg:"--private" help:"your private repos from your .config/forge/"` + User bool `arg:"--user" help:"show repos on the user branch"` + Full bool `arg:"--full" help:"show full repo names"` +} + +type ModeCmd struct { + Master *EmptyCmd `arg:"subcommand:master" help:"keep all repos on the master branch"` + Devel *EmptyCmd `arg:"subcommand:devel" help:"use devel branches"` + 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"` +} + +type CommitCmd struct { + All bool `arg:"--all" help:"git commit in all dirty repos"` +} + +type DevCmd struct { + Build *EmptyCmd `arg:"subcommand:build" help:"build this repo"` + Install *EmptyCmd `arg:"subcommand:install" help:"build & install this repo"` + URL string `arg:"--connect" help:"forge url"` +} + +type GenerateCmd struct { + Make *EmptyCmd `arg:"subcommand:make" help:"make all the autogenerated files"` + Clean *EmptyCmd `arg:"subcommand:clean" help:"clean out all the autogenerated files"` + Verbose bool `arg:"--verbose" help:"be verbose about it"` + Strict bool `arg:"--strict" help:"die if any namespaces are missing"` +} + +type CleanCmd struct { + List *EmptyCmd `arg:"subcommand:list" help:"list not clean repos"` +} + +type CleanDevelCmd struct { + Force bool `arg:"--force" help:"try to strong arm things"` +} + +type PatchCmd struct { + Apply bool `arg:"--apply" help:"attempt to apply any new patches"` + Show bool `arg:"--show" help:"show the current patches"` + Submit bool `arg:"--resubmit" help:"resubmit your git commits"` +} + +type PullCmd struct { + Force bool `arg:"--force" help:"try to strong-arm things"` + List *EmptyCmd `arg:"subcommand:list" help:"list repo versions"` + Check *RepoCmd `arg:"subcommand:check" help:"check for repo changes"` + Update *EmptyCmd `arg:"subcommand:update" help:"report updates"` +} + +type TagCmd struct { + List *EmptyCmd `arg:"subcommand:list" help:"list the tags"` + Clean *EmptyCmd `arg:"subcommand:clean" help:"clean out old and duplicate tags"` + Delete string `arg:"--delete" help:"delete a tag"` +} + +type MergeCmd struct { + All bool `arg:"--all" help:"merge all"` + Devel *EmptyCmd `arg:"subcommand:devel" help:"merge user to devel"` + Master *EmptyCmd `arg:"subcommand:master" help:"merge devel to master"` + Publish *EmptyCmd `arg:"subcommand:publish" help:"increment versions and publish master branch"` + Check *EmptyCmd `arg:"subcommand:check" help:"check if merge is complete and ready to publish"` +} + +type ConfigCmd struct { + Add *ConfigAddCmd `arg:"subcommand:add" help:"add a config setting"` + List *EmptyCmd `arg:"subcommand:list" help:"list your config settings"` + Delete string `arg:"--delete" help:"delete this repo"` + Register string `arg:"--register" help:"register your git URL (foo.com/mystuff) or (github.com/foo/bar)"` +} + +type ConfigAddCmd struct { + Path string `arg:"--path" help:"absolute path of the git repo"` + Namespace string `arg:"--namespace" help:"namespace of the git repo"` + Directory bool `arg:"--directory" help:"repo is a directory to match against"` + ReadOnly bool `arg:"--readonly" help:"repo is readonly"` + Writable bool `arg:"--writable" help:"repo is writable"` + Favorite bool `arg:"--favorite" help:"forge will always go-clone or git clone this" default:"false"` + Private bool `arg:"--private" default:"false" help:"repo can not be published"` + Interesting bool `arg:"--interesting" default:"false" help:"something you decided was cool"` + DebName string `arg:"--debname" help:"the name of the debian package (or rpm, etc)"` + Master string `arg:"--master" help:"the git 'master' or 'main' branch name"` + Devel string `arg:"--devel" help:"the git devel branch name"` + User string `arg:"--user" help:"the git user branch name"` +} |
