summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean E. Russell <ser@ser1.net>2020-03-08 08:50:20 -0500
committerSean E. Russell <ser@ser1.net>2020-03-08 08:50:20 -0500
commit025527730fb350c42e106507c6b5d239258687bf (patch)
tree4a7e8c8fd9080d35bd0d9fe0b865a86133f24931
parentc24562d6712ed591a18a8cc4c88eea502ab92e1f (diff)
Better error reporting.
-rw-r--r--cmd/gotop/main.go34
1 files changed, 19 insertions, 15 deletions
diff --git a/cmd/gotop/main.go b/cmd/gotop/main.go
index d6fa639..1533d74 100644
--- a/cmd/gotop/main.go
+++ b/cmd/gotop/main.go
@@ -74,7 +74,7 @@ Options:
-X, --extensions=NAMES Enables the listed extensions. This is a comma-separated list without the .so suffix. The current and config directories will be searched.
--test Runs tests and exits with success/failure code
--print-paths List out the paths that gotop will look for gotop.conf, layouts, color schemes, and extensions
- --print-keys Show the keyboard bindings
+ --print-keys Show the keyboard bindings
Built-in layouts:
@@ -414,6 +414,11 @@ func main() {
// annoying work-around for a lack of a clean way to exit Go programs
// with exit codes.
ec := run()
+ if ec > 0 {
+ if ec < 2 {
+ fmt.Printf("errors encountered; check the log file %s\n", filepath.Join(conf.ConfigDir.QueryCacheFolder().Path, logging.LOGFILE))
+ }
+ }
os.Exit(ec)
}
@@ -423,30 +428,33 @@ func run() int {
// Find the config file; look in (1) local, (2) user, (3) global
err := conf.Load()
if err != nil {
- stderrLogger.Printf("failed to parse config file: %s", err)
+ fmt.Printf("failed to parse config file: %s\n", err)
+ return 2
}
// Override with command line arguments
err = parseArgs(&conf)
if err != nil {
- stderrLogger.Fatalf("failed to parse cli args: %v", err)
+ fmt.Printf("parsing CLI args: %s\n", err)
+ return 2
}
logfile, err := logging.New(conf)
if err != nil {
fmt.Printf("failed to setup log file: %v\n", err)
- return 1
+ return 2
}
defer logfile.Close()
lstream, err := getLayout(conf)
if err != nil {
- fmt.Printf("failed to find layou: %s\n", err)
+ stderrLogger.Print(err)
return 1
}
ly := layout.ParseLayout(lstream)
err = loadExtensions(conf)
if err != nil {
+ stderrLogger.Print(err)
return 1
}
@@ -455,7 +463,8 @@ func run() int {
}
if err := ui.Init(); err != nil {
- stderrLogger.Fatalf("failed to initialize termui: %v", err)
+ stderrLogger.Print(err)
+ return 1
}
defer ui.Close()
@@ -467,7 +476,8 @@ func run() int {
grid, err := layout.Layout(ly, conf)
if err != nil {
- stderrLogger.Fatalf("failed to initialize termui: %v", err)
+ stderrLogger.Print(err)
+ return 1
}
termWidth, termHeight := ui.TerminalDimensions()
@@ -537,6 +547,7 @@ func loadExtensions(conf gotop.Config) error {
paths = append(paths, d.Path)
}
log.Printf("unable find extension %s in %s", fn, strings.Join(paths, ", "))
+ hasError = true
continue
}
fp := filepath.Join(folder.Path, fn)
@@ -561,14 +572,7 @@ func loadExtensions(conf gotop.Config) error {
initFunc()
}
if hasError {
- folder := conf.ConfigDir.QueryFolderContainsFile(logging.LOGFILE)
- var err error
- if folder == nil {
- err = fmt.Errorf("error initializing requested plugins\n")
- } else {
- err = fmt.Errorf("error initializing requested plugins; check the log file %s\n", filepath.Join(folder.Path, logging.LOGFILE))
- }
- return err
+ return fmt.Errorf("error initializing plugins")
}
return nil
}