summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-19 15:29:02 -0500
committerJeff Carr <[email protected]>2025-10-19 15:29:02 -0500
commit3246e9b1f7ba7b983ca536f06d1dbbb636d1ad5b (patch)
treefc7e065170afb516ecb9d77401e4aec8ec8b3743 /main.go
parent1a618273bf123cef8a91cccd191b32b605c90abc (diff)
redo argv name
Diffstat (limited to 'main.go')
-rw-r--r--main.go158
1 files changed, 38 insertions, 120 deletions
diff --git a/main.go b/main.go
index d7d458a..74ce647 100644
--- a/main.go
+++ b/main.go
@@ -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)
}