cmd: only display the stack trace when in --verbose mode

This commit is contained in:
Earl Warren
2024-02-27 09:54:14 +01:00
parent ee2a511f23
commit b73fdbeb50
2 changed files with 15 additions and 9 deletions

View File

@@ -11,6 +11,7 @@ import (
"lab.forgefriends.org/friendlyforgeformat/gof3/logger"
"lab.forgefriends.org/friendlyforgeformat/gof3/options"
"lab.forgefriends.org/friendlyforgeformat/gof3/tree/generic"
"lab.forgefriends.org/friendlyforgeformat/gof3/util"
"github.com/urfave/cli/v2"
)
@@ -72,12 +73,12 @@ func CreateCmdMirror(ctx context.Context) *cli.Command {
Name: "mirror",
Usage: "Mirror",
Description: "Mirror",
Action: func(c *cli.Context) error { return runMirror(ctx, c) },
Action: func(c *cli.Context) error { return util.PanicToError(func() { runMirror(ctx, c) }) },
Flags: flags,
}
}
func runMirror(ctx context.Context, c *cli.Context) error {
func runMirror(ctx context.Context, c *cli.Context) {
from := FlagsToTree(ctx, c, directionFrom)
to := FlagsToTree(ctx, c, directionTo)
fromPathString := c.String(BuildForgePrefix(directionFrom, "path"))
@@ -109,7 +110,7 @@ func runMirror(ctx context.Context, c *cli.Context) error {
}
from.ApplyAndGet(ctx, fromPath, generic.NewApplyOptions(walkAndGet))
if fromNode == generic.NilNode {
return fmt.Errorf("from %s not found", fromPath)
panic(fmt.Errorf("from %s not found", fromPath))
}
from.Debug("copy %s from %T to %T", fromPath, from, to)
@@ -118,9 +119,8 @@ func runMirror(ctx context.Context, c *cli.Context) error {
} else {
toNode := to.FindAndGet(ctx, toPath)
if toNode == generic.NilNode {
return fmt.Errorf("to %s not found", toPath)
panic(fmt.Errorf("to %s not found", toPath))
}
generic.NodeMirror(ctx, fromNode, toNode, generic.NewMirrorOptions())
}
return nil
}

View File

@@ -10,6 +10,7 @@ import (
"lab.forgefriends.org/friendlyforgeformat/gof3/cmd"
"lab.forgefriends.org/friendlyforgeformat/gof3/logger"
"lab.forgefriends.org/friendlyforgeformat/gof3/util"
)
var Version = "development"
@@ -21,10 +22,15 @@ func main() {
func run(args []string) {
ctx, cancel := cmd.InstallSignals()
defer cancel()
ctx = logger.ContextSetLogger(ctx, logger.NewLogger())
log := logger.NewLogger()
ctx = logger.ContextSetLogger(ctx, log)
err := cmd.NewApp(ctx).Run(args)
if err != nil {
panic(fmt.Errorf("Failed to run F3 with %s: %v", os.Args, err))
app := cmd.NewApp(ctx)
if err := app.Run(args); err != nil {
fmt.Printf("Failed to run F3 with %s\n%v\n", os.Args, err)
if panicErr, ok := err.(util.PanicError); log.GetLevel() < logger.Info && ok {
fmt.Printf("Stack trace\n%s", panicErr.Stack())
}
}
}