diff options
| author | Jeff Carr <[email protected]> | 2025-10-19 15:29:02 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-19 15:29:02 -0500 |
| commit | 3246e9b1f7ba7b983ca536f06d1dbbb636d1ad5b (patch) | |
| tree | fc7e065170afb516ecb9d77401e4aec8ec8b3743 /main.go | |
| parent | 1a618273bf123cef8a91cccd191b32b605c90abc (diff) | |
redo argv name
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 158 |
1 files changed, 38 insertions, 120 deletions
@@ -8,7 +8,6 @@ package main import ( "embed" - "go.wit.com/lib/gui/shell" "go.wit.com/lib/protobuf/argvpb" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/log" @@ -19,34 +18,30 @@ import ( //go:embed resources/* var resources embed.FS -func main() { - me = new(mainType) - var s string - var err error - - // autocomplete must run before everythingi - // any writes before this to STDOUT or STDERR - // will cause problems for the user at the command line - me.sh = argvpb.Autocomplete(&argv) // adds shell auto complete to go-args - +func doInit() *forgepb.Forge { // the current forge init process - me.forge, err = forgepb.Init() // init forge.pb - if err != nil { - s, err = doNewUser() + forge, err := forgepb.Init() + me.forge = forge + if err == nil { + // do the new user check anyway. should exit right away with no error + s, err := doNewUser() if err != nil { - me.sh.BadExit(s, err) - } - } else { - // do new user evertime for now - s, err = doNewUser() - if err != nil { - me.sh.BadExit(s, err) + // fail if new user check fails + me.argv.BadExit(s, err) } + return forge } - // checks if this is a new forge setup. - // if so, forge needs to configure things first + // Probably a new user + s, err := doNewUser() + if err != nil { + me.argv.BadExit(s, err) + } + me.argv.GoodExit("try running: 'forge rebuild forge' to test out that forge is working on your machine") + return forge +} +func doCoreChecks() { me.forge.ScanRepoDir() // looks for new dirs, checks existing repos for changes if me.forge.Config.Mode != forgepb.ForgeMode_NORMAL { @@ -63,112 +58,35 @@ func main() { doNormalStatus() } - if me.sh.Cmd == "" { - s, err := doDefaultBehavior() - if err != nil { - me.sh.BadExit(s, err) - } - me.sh.GoodExit(s) - } - log.Info("Starting forge with subcommand:", me.sh.Cmd) - - //// start standard argv subcommand processing here //// - if argv.Dev != nil { - // first find the repos or gopaths to operate on - if argv.Dev.Config != nil { - doConfig() - okExit("") - } - s, err := doDev() - if err != nil { - me.sh.BadExit(s, err) - } - me.sh.GoodExit(s) - } - - if argv.Commit != nil { - s, err = doCommit() - } - - if argv.Dev != nil { - s, err = doDev() - } - - if argv.Fixer != nil { - s, err = doFix() - } +} - if argv.Clean != nil { - s, err = doClean() - } +func main() { + me = new(mainType) + me.argv = argvpb.Autocomplete(&argv) // adds shell auto complete to go-args + me.forge = doInit() // init's forge (and checks for new users) - if argv.Mode != nil { - s, err = doMode() - } + // put things to do every time forge runs here + doCoreChecks() - if argv.Normal != nil { - if me.forge.Config.Mode == forgepb.ForgeMode_NORMAL { - s, err = doNormalAll() - } else { - // attempt to switch into Normal mode - s, err = doNormalAttempt() + if me.argv.Cmd == "" { + // no command line arguments were given + // do the default behavior and exit + s, err := doDefaultBehavior() + if err != nil { + me.argv.BadExit(s, err) } + me.argv.GoodExit(s) } - if argv.Merge != nil { - s, err = doMerge() - } - - if argv.Add != nil { - doAdd() - } - - if argv.Pull != nil { - doPull() - } - - if argv.Show != nil { - s, err = doShow() - } + log.Info("Starting forge with subcommand:", me.argv.Cmd) - if argv.Patch != nil { - s, err = doPatch() - } - - if argv.Generate != nil { - s, err = doGenerate() - } - - if argv.Whatchanged != nil { - // this might be deprecated by the git devs - // I put it here because of finger memory and it's nice - // for command line completion - r := shell.RunRealtime([]string{"bash", "-c", "git log"}) - s = "git whatchanged is now: todo" - err = r.Error - } - - if argv.Rebuild != nil { - // attempts to download all the sources - // and binaries needed to build forge - s, err = doRebuild() - } - - if argv.Verify != nil { - s, err = doVerify() - } - //// end standard argv subcommand processing here //// - - // if the gui starts, it doesn't yet go to the end normally - if argv.Gui != nil { - me.myGui.Start() // loads the GUI toolkit - doGui() // start making our forge GUI - debug() // sits here forever - } + var s string + var err error + s, err = doSubcommand() // safe exits back to your shell (with timing and toolkit close) if err != nil { - me.sh.BadExit(s, err) + me.argv.BadExit(s, err) } - me.sh.GoodExit(s) + me.argv.GoodExit(s) } |
