summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--argv.Print.go24
-rw-r--r--argv.SendStrings.go8
-rw-r--r--argv.Version.go7
-rw-r--r--argv.parseOsArgs.go24
-rw-r--r--exit.go11
-rw-r--r--gui.go18
-rw-r--r--init.go6
-rw-r--r--makeAutocompleteFiles.bash.go7
-rw-r--r--makeAutocompleteFiles.zsh.go4
-rw-r--r--notsure.go8
-rw-r--r--theMagicOfAutocomplete.go46
11 files changed, 93 insertions, 70 deletions
diff --git a/argv.Print.go b/argv.Print.go
index 9429a01..7cfbcff 100644
--- a/argv.Print.go
+++ b/argv.Print.go
@@ -5,6 +5,7 @@ package argvpb
import (
"fmt"
+ "os"
"strings"
"go.wit.com/lib/cobol"
@@ -47,3 +48,26 @@ func (all *Argvs) PrintHistory() {
pb.PrintDebugNew("HIST")
}
}
+
+func (pb *Argv) PrintStderr() {
+ if !me.debug {
+ os.Exit(0)
+ }
+ lines := strings.Split(strings.TrimSpace(pb.Stderr), "\n")
+ if len(lines) == 0 {
+ os.Exit(0)
+ }
+ fmt.Fprintf(os.Stderr, "\n")
+ for _, line := range lines {
+ line = strings.TrimSpace(line)
+ if line == "" {
+ continue
+ }
+ fmt.Fprintf(os.Stderr, "%s\n", line)
+ }
+}
+
+func (pb *Argv) PrintStderrExit() {
+ pb.PrintStderr()
+ os.Exit(0)
+}
diff --git a/argv.SendStrings.go b/argv.SendStrings.go
index 4192ba0..b523120 100644
--- a/argv.SendStrings.go
+++ b/argv.SendStrings.go
@@ -8,8 +8,6 @@ import (
"fmt"
"os"
"strings"
-
- "go.wit.com/log"
)
// the application must send a string "help run list"
@@ -33,7 +31,7 @@ func (pb *Argv) SendStrings(parts []string) {
}
all = append(all, part)
}
- fmt.Printf("%s", strings.Join(all, " "))
+ pb.Stdout = fmt.Sprintf("%s", strings.Join(all, " "))
}
// try out a new name. also, this whole thing is dumb and needs to be redone
@@ -45,9 +43,9 @@ func (pb *Argv) SubCommand(cmd ...string) {
if me.examples == nil {
pb.Debugf("WRITE DEBUG: argv.Examples() not defined")
} else {
- pb.Stderr += log.Sprintf("Examples:\n")
+ pb.Stderr += fmt.Sprintf("Examples:\n")
for _, line := range strings.Split(me.examples(), "\n") {
- pb.Stderr += log.Sprintf(" %s\n", line)
+ pb.Stderr += fmt.Sprintf(" %s\n", line)
}
}
partial := strings.Trim(pb.Partial, "'")
diff --git a/argv.Version.go b/argv.Version.go
index 4a133c2..e54fb3e 100644
--- a/argv.Version.go
+++ b/argv.Version.go
@@ -5,7 +5,6 @@ import (
"os"
"go.wit.com/lib/cobol"
- "go.wit.com/log"
)
func (pb *Argv) Version() string {
@@ -13,7 +12,7 @@ func (pb *Argv) Version() string {
}
func doVersion(pb *Argv) {
- log.Info(pb.AppInfo.getVersion())
+ fmt.Println(pb.AppInfo.getVersion())
os.Exit(0)
}
@@ -21,12 +20,12 @@ func (info *App) getVersion() string {
var s string
timeString, t, err := cobol.TimeCheck(info.BUILDTIME)
if t != nil {
- // log.Printf("TIME getVersion(t != nil) ERR=(%v) t=(%v) AppInfo.BUILTIME is=(%v)\n", err, t, info.BUILDTIME)
+ // fmt.Printf("TIME getVersion(t != nil) ERR=(%v) t=(%v) AppInfo.BUILTIME is=(%v)\n", err, t, info.BUILDTIME)
return fmt.Sprintf("%s %s Built on %s", info.APPNAME, info.VERSION, cobol.Time(t))
} else if err == nil {
s = fmt.Sprintf("%s %s Built on %s (argv.had(%s))", info.APPNAME, info.VERSION, timeString, info.BUILDTIME)
} else {
- log.Printf("TIME getVersion() ERR=(%v) timeString=(%v) AppInfo.BUILTIME was=(%v)\n", err, timeString, info.BUILDTIME)
+ // fmt.Printf("TIME getVersion() ERR=(%v) timeString=(%v) AppInfo.BUILTIME was=(%v)\n", err, timeString, info.BUILDTIME)
s = fmt.Sprintf("%s %s Built on raw(%v) (argv had %s)", info.APPNAME, info.VERSION, timeString, info.BUILDTIME)
}
return s
diff --git a/argv.parseOsArgs.go b/argv.parseOsArgs.go
index ac5be15..bf73744 100644
--- a/argv.parseOsArgs.go
+++ b/argv.parseOsArgs.go
@@ -6,8 +6,6 @@ import (
"fmt"
"os"
"strings"
-
- "go.wit.com/log"
)
// todo: this is wrong
@@ -82,20 +80,16 @@ func (pb *Argv) parseOsArgs() {
}
}
- // wtf is this. I've forgotten. todo: figure this out
- if len(os.Args) > 1 && os.Args[1] == pb.AppInfo.APPNAME {
- me.isAuto = true
- parts := strings.Split(os.Getenv("COMP_LINE"), " ")
- me.debug = true
- log.Fprintf(os.Stderr, "\n")
- pb.Debugf("MATCH Partial os.Args=%v COMP_LINE=%v", os.Args, os.Getenv("COMP_LINE"))
- // log.Fprintf(os.Stdout, "jcarr")
- if len(parts) > 0 {
- // pb.Arg0 = parts[0]
+ /*
+ // wtf is this. I've forgotten. todo: figure this out
+ if len(os.Args) > 1 && os.Args[1] == pb.AppInfo.APPNAME {
+ me.isAuto = true
+ // parts := strings.Split(os.Getenv("COMP_LINE"), " ")
+ me.debug = true
+ pb.Debugf("MATCH Partial os.Args=%v COMP_LINE=%v", os.Args, os.Getenv("COMP_LINE"))
+ os.Exit(0)
}
- // pb.Arg1 = os.Args[1]
- os.Exit(0)
- }
+ */
// print the version and exit
if len(os.Args) > 1 && os.Args[1] == "--version" {
diff --git a/exit.go b/exit.go
index 836032c..107230c 100644
--- a/exit.go
+++ b/exit.go
@@ -6,7 +6,6 @@ import (
"time"
"go.wit.com/lib/cobol"
- "go.wit.com/log"
)
// since we know when the command starts (duh, this parses os.Args)
@@ -35,7 +34,7 @@ func (pb *Argv) GoodExit(msg string) {
} else {
appname = pb.AppInfo.APPNAME
}
- log.Infof("%s: %s (%s)\n", appname, msg, cobol.FormatDuration(dur))
+ fmt.Printf("%s: %s (%s)\n", appname, msg, cobol.FormatDuration(dur))
os.Exit(0)
}
@@ -50,11 +49,11 @@ func (pb *Argv) BadExit(msg string, err error) {
// If it does, call the method to get the slice of errors.
allerr := u.Unwrap()
for _, e := range allerr {
- log.Info("Error:", e)
+ fmt.Printf("Error: (%v)\n", e)
}
} else {
// If it's not a joined error, you can fall back to the single-unwrap loop.
- log.Info("Error:", err)
+ fmt.Printf("Error: (%v)\n", u)
}
}
@@ -65,7 +64,7 @@ func (pb *Argv) BadExit(msg string, err error) {
} else {
appname = pb.AppInfo.APPNAME
}
- log.Infof("%s error: %s (%s)\n", appname, msg, cobol.FormatDuration(dur))
+ fmt.Printf("%s error: %s (%s)\n", appname, msg, cobol.FormatDuration(dur))
os.Exit(1)
}
@@ -88,7 +87,7 @@ func ExitWatchdog() {
return
case t := <-dog.C:
_ = t
- log.Info("argv.Exit() watchdog: stalled in", me.pb.AppInfo.APPNAME+".Exit()")
+ fmt.Println("argv.Exit() watchdog: stalled in", me.pb.AppInfo.APPNAME+".Exit()")
// h.Scan()
}
}
diff --git a/gui.go b/gui.go
index 1146e52..242efa9 100644
--- a/gui.go
+++ b/gui.go
@@ -1,10 +1,10 @@
package argvpb
import (
+ "fmt"
"os"
"go.wit.com/lib/cobol"
- "go.wit.com/log"
)
// this has been deprecated
@@ -28,13 +28,13 @@ func (g *GuiPrep) Start() error {
// provides a runtime warning to the user that the app was compiled but lacks working features
func workInProgress() {
s := "Mon Oct 13 10:48:16 CDT 2025"
- log.Info(cobol.Time(s) + ": " + os.Args[0] + ": argv features are disabled")
- log.Info(cobol.Time(s) + ": argv features are under active development")
- log.Info(cobol.Time(s) + ":")
- log.Info(cobol.Time(s) + ": argv Gui() support has been moved to go.wit.com/lib/fhelp")
- log.Info(cobol.Time(s) + ": Change your code. Example code is here:")
- log.Info(cobol.Time(s) + ": go.wit.com/apps/forge/argv.go")
- log.Info(cobol.Time(s) + ": go.wit.com/apps/forge/main.go")
- log.Info(cobol.Time(s) + ":")
+ fmt.Println(cobol.Time(s) + ": " + os.Args[0] + ": argv features are disabled")
+ fmt.Println(cobol.Time(s) + ": argv features are under active development")
+ fmt.Println(cobol.Time(s) + ":")
+ fmt.Println(cobol.Time(s) + ": argv Gui() support has been moved to go.wit.com/lib/fhelp")
+ fmt.Println(cobol.Time(s) + ": Change your code. Example code is here:")
+ fmt.Println(cobol.Time(s) + ": go.wit.com/apps/forge/argv.go")
+ fmt.Println(cobol.Time(s) + ": go.wit.com/apps/forge/main.go")
+ fmt.Println(cobol.Time(s) + ":")
// panic("deprecated")
}
diff --git a/init.go b/init.go
index b572477..44e8b7a 100644
--- a/init.go
+++ b/init.go
@@ -1,10 +1,10 @@
package argvpb
import (
+ "fmt"
"time"
"go.wit.com/lib/cobol"
- "go.wit.com/log"
)
// gets APPNAME, BUILDTIME and VERSION from the application
@@ -26,10 +26,10 @@ func initAppname() {
} else if err == nil {
newtime := BUILDTIME.Add(-36 * time.Hour)
app.BUILDTIME = cobol.Time(BUILDTIME)
- log.Printf("TIME initAppname() ERR=(%v) anyString=(%v) GetTime.BUILTIME=(%v) app.BUILDTIME=(%v)\n", err, anyString, newtime, app.BUILDTIME)
+ fmt.Printf("TIME initAppname() ERR=(%v) anyString=(%v) GetTime.BUILTIME=(%v) app.BUILDTIME=(%v)\n", err, anyString, newtime, app.BUILDTIME)
} else {
app.BUILDTIME = anyString
- log.Printf("TIME initAppname() ERR=(%v) anyString=(%v) GetTime.BUILTIME=(%v) app.BUILDTIME=(%v)\n", err, anyString, BUILDTIME, app.BUILDTIME)
+ fmt.Printf("TIME initAppname() ERR=(%v) anyString=(%v) GetTime.BUILTIME=(%v) app.BUILDTIME=(%v)\n", err, anyString, BUILDTIME, app.BUILDTIME)
}
me.pb.AppInfo = app
}
diff --git a/makeAutocompleteFiles.bash.go b/makeAutocompleteFiles.bash.go
index 1a4158c..f0cc953 100644
--- a/makeAutocompleteFiles.bash.go
+++ b/makeAutocompleteFiles.bash.go
@@ -10,7 +10,6 @@ import (
"strings"
"go.wit.com/lib/config"
- "go.wit.com/log"
)
func MakeBashCompleteFiles(argname string) {
@@ -18,12 +17,12 @@ func MakeBashCompleteFiles(argname string) {
homeDir, err := os.UserHomeDir()
if err != nil {
- log.Printf("# %v\n", err)
+ fmt.Printf("# %v\n", err)
os.Exit(0)
}
filename := filepath.Join(homeDir, ".local/share/bash-completion/completions", argname)
if config.Exists(filename) {
- log.Fprintln(os.Stderr, "# file already exists", filename)
+ fmt.Fprintln(os.Stderr, "# file already exists", filename)
// os.Exit(0)
}
basedir, _ := filepath.Split(filename)
@@ -35,7 +34,7 @@ func MakeBashCompleteFiles(argname string) {
f.Write([]byte(makeBashCompletionText2(argname)))
f.Close()
} else {
- log.Fprintln(os.Stderr, "# open file error", filename, err)
+ fmt.Fprintln(os.Stderr, "# open file error", filename, err)
}
}
diff --git a/makeAutocompleteFiles.zsh.go b/makeAutocompleteFiles.zsh.go
index 98e4647..c8bbf69 100644
--- a/makeAutocompleteFiles.zsh.go
+++ b/makeAutocompleteFiles.zsh.go
@@ -1,11 +1,11 @@
package argvpb
-import "go.wit.com/log"
+import "fmt"
// makes the autocomplete files for 'zsh'
func MakeZshCompleteFiles(argname string) {
- log.Info("todo: zsh")
+ fmt.Println("todo: zsh")
}
/*
diff --git a/notsure.go b/notsure.go
index 2d4c649..f9288b1 100644
--- a/notsure.go
+++ b/notsure.go
@@ -1,6 +1,6 @@
package argvpb
-import "go.wit.com/log"
+import "fmt"
// these are things I'm not sure about doing
// or haven't figured out what to do with
@@ -16,8 +16,8 @@ type ArgsBash struct {
// maybe this is a good idea, maybe not
func (pb *Argv) Gui() bool {
- log.Printf("CUR pb: %v\n", pb)
- log.Info("CUR ARGV:", pb.Real)
+ fmt.Printf("CUR pb: %v\n", pb)
+ fmt.Println("CUR ARGV:", pb.Real)
if "gui" == pb.GetCmd() {
return true
}
@@ -25,5 +25,5 @@ func (pb *Argv) Gui() bool {
}
func (pb *Argv) Dump() {
- log.Printf("CUR pb: %v\n", pb)
+ fmt.Printf("CUR pb: %v\n", pb)
}
diff --git a/theMagicOfAutocomplete.go b/theMagicOfAutocomplete.go
index 94fb38c..d9ef386 100644
--- a/theMagicOfAutocomplete.go
+++ b/theMagicOfAutocomplete.go
@@ -13,7 +13,6 @@ import (
"go.wit.com/lib/ENV"
"go.wit.com/lib/cobol"
"go.wit.com/lib/config"
- "go.wit.com/log"
durationpb "google.golang.org/protobuf/types/known/durationpb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)
@@ -56,9 +55,9 @@ func Autocomplete(dest any) *Argv {
if me.guiFunc != nil {
// register gui args
me.guiFunc()
- // log.Info("gui init")
+ // fmt.Println("gui init")
} else {
- // log.Info("no gui init")
+ // fmt.Println("no gui init")
}
// user is trying to setup bash or zsh autocomplete
@@ -144,18 +143,38 @@ func Autocomplete(dest any) *Argv {
if strings.HasPrefix(me.pb.Partial, "--argv") {
me.pb.SendString("--argvdebug --argvhelp")
- os.Exit(0)
+ me.pb.Stderr += fmt.Sprintln("argv override")
+ me.debug = true
+ me.pb.PrintStderrExit()
+ }
+
+ // highjack "--gui"
+ if len(me.pb.Real) > 1 {
+ lastarg := me.pb.Real[len(me.pb.Real)-1]
+ // this is a work in progress
+ if lastarg == "--gui" {
+ me.pb.Debugf("DEBUG: real=(%v) found --gui", me.pb.Real)
+ me.pb.PrintStderr()
+ me.pb.SendString("andlabs gogui")
+ os.Exit(0)
+ } else {
+ // me.pb.Debugf("DEBUG: NO MATCH last='%s' found key '%s' = %s", me.last, key, val)
+ }
}
// use go-args to parse the structs so we can use them here
// me.pp, err = arg.ParseFlags(flags, dest)
if me.parseFlagsFunc == nil {
- panic("argv.parseFlags() is nil")
+ me.pb.Stderr += fmt.Sprintln("argv.parseFlags() is nil")
+ me.debug = true
+ me.pb.PrintStderrExit()
}
if err := me.parseFlagsFunc(flags); err != nil {
- log.Info("application parseFlags() err", err)
- panic("argv.parseFlags() err. probably cmd doesn't really exist in struct")
+ me.pb.Stderr += fmt.Sprintf("application parseFlags() err(%v)\n", err)
+ me.pb.Stderr += fmt.Sprintln("argv.parseFlags() err. probably cmd doesn't really exist in struct")
+ me.debug = true
+ me.pb.PrintStderrExit()
}
if len(flags) == 0 {
@@ -171,19 +190,10 @@ func Autocomplete(dest any) *Argv {
all.Clone(me.pb)
errors.Join(err, all.Save())
- lastarg := me.pb.Real[len(me.pb.Real)-1]
- // this is a work in progress
- if lastarg == "--gui" {
- me.pb.Debugf("DEBUG: real=(%v) found --gui", me.pb.Real)
- me.pb.SendString("andlabs gogui")
- os.Exit(0)
- } else {
- // me.pb.Debugf("DEBUG: NO MATCH last='%s' found key '%s' = %s", me.last, key, val)
- }
-
if me.pb.Fast {
if me.last.Fast {
- os.Exit(0)
+ me.debug = true
+ me.pb.PrintStderr()
} else {
// this means the user is pressing tab. no longer doing stderr
if me.pb.GetCmd() == "" {