chore: Use After hooks and proper args

This commit is contained in:
Mike Greenberg 2021-09-17 18:01:54 -04:00
parent f79d34be5c
commit 3508a5b664
4 changed files with 42 additions and 8 deletions

View File

@ -5,7 +5,6 @@ import (
"io" "io"
"os" "os"
"github.com/filecoin-project/lotus/build"
ufcli "github.com/urfave/cli/v2" ufcli "github.com/urfave/cli/v2"
"golang.org/x/xerrors" "golang.org/x/xerrors"
) )
@ -33,13 +32,6 @@ func ShowHelp(cctx *ufcli.Context, err error) error {
} }
func RunApp(app *ufcli.App) { func RunApp(app *ufcli.App) {
defer func() {
if r := recover(); r != nil {
// Generate report in LOTUS_PATH and re-raise panic
build.GeneratePanicReport(os.Getenv("LOTUS_PATH"), "app_panic")
panic(r)
}
}()
if err := app.Run(os.Args); err != nil { if err := app.Run(os.Args); err != nil {
if os.Getenv("LOTUS_DEV") != "" { if os.Getenv("LOTUS_DEV") != "" {
log.Warnf("%+v", err) log.Warnf("%+v", err)

View File

@ -113,6 +113,12 @@ func main() {
Usage: "use color in display output", Usage: "use color in display output",
DefaultText: "depends on output being a TTY", DefaultText: "depends on output being a TTY",
}, },
&cli.StringFlag{
Name: "panic-reports",
EnvVars: []string{"LOTUS_PANIC_REPORT_PATH"},
Hidden: true,
Value: "~/.lotus", // should follow --repo default
},
&cli.StringFlag{ &cli.StringFlag{
Name: "repo", Name: "repo",
EnvVars: []string{"LOTUS_PATH"}, EnvVars: []string{"LOTUS_PATH"},
@ -146,6 +152,14 @@ func main() {
} }
return nil return nil
}, },
After: func(c *cli.Context) error {
if r := recover(); r != nil {
// Generate report in LOTUS_PATH and re-raise panic
build.GeneratePanicReport(c.String("panic-reports"), c.String("repo"), c.App.Name)
panic(r)
}
return nil
},
} }
app.Setup() app.Setup()
app.Metadata["repoType"] = repo.StorageMiner app.Metadata["repoType"] = repo.StorageMiner

View File

@ -75,6 +75,12 @@ func main() {
Value: "~/.lotusworker", // TODO: Consider XDG_DATA_HOME Value: "~/.lotusworker", // TODO: Consider XDG_DATA_HOME
Usage: fmt.Sprintf("Specify worker repo path. flag %s and env WORKER_PATH are DEPRECATION, will REMOVE SOON", FlagWorkerRepoDeprecation), Usage: fmt.Sprintf("Specify worker repo path. flag %s and env WORKER_PATH are DEPRECATION, will REMOVE SOON", FlagWorkerRepoDeprecation),
}, },
&cli.StringFlag{
Name: "panic-reports",
EnvVars: []string{"LOTUS_PANIC_REPORT_PATH"},
Hidden: true,
Value: "~/.lotus", // should follow --repo default
},
&cli.StringFlag{ &cli.StringFlag{
Name: "miner-repo", Name: "miner-repo",
Aliases: []string{"storagerepo"}, Aliases: []string{"storagerepo"},
@ -89,6 +95,14 @@ func main() {
}, },
}, },
After: func(c *cli.Context) error {
if r := recover(); r != nil {
// Generate report in LOTUS_PATH and re-raise panic
build.GeneratePanicReport(c.String("panic-reports"), c.String(FlagWorkerRepo), c.App.Name)
panic(r)
}
return nil
},
Commands: local, Commands: local,
} }
app.Setup() app.Setup()

View File

@ -67,6 +67,12 @@ func main() {
Version: build.UserVersion(), Version: build.UserVersion(),
EnableBashCompletion: true, EnableBashCompletion: true,
Flags: []cli.Flag{ Flags: []cli.Flag{
&cli.StringFlag{
Name: "panic-reports",
EnvVars: []string{"LOTUS_PANIC_REPORT_PATH"},
Hidden: true,
Value: "~/.lotus", // should follow --repo default
},
&cli.StringFlag{ &cli.StringFlag{
Name: "repo", Name: "repo",
EnvVars: []string{"LOTUS_PATH"}, EnvVars: []string{"LOTUS_PATH"},
@ -84,6 +90,14 @@ func main() {
}, },
cliutil.FlagVeryVerbose, cliutil.FlagVeryVerbose,
}, },
After: func(c *cli.Context) error {
if r := recover(); r != nil {
// Generate report in LOTUS_PATH and re-raise panic
build.GeneratePanicReport(c.String("panic-reports"), c.String("repo"), c.App.Name)
panic(r)
}
return nil
},
Commands: append(local, lcli.Commands...), Commands: append(local, lcli.Commands...),
} }