in cmd/go-runner/main.go [92:144]
func newRunCommand() *cobra.Command {
var mode RunMode
cmd := &cobra.Command{
Use: "run",
Short: "run",
Run: func(cmd *cobra.Command, _ []string) {
cfg := runner.RunnerConfig{}
if mode == Prod {
cfg.LogLevel = zapcore.WarnLevel
f, err := openFileToWrite(LogFilePath)
if err != nil {
log.Fatalf("failed to open log: %s", err)
}
cfg.LogOutput = f
} else if mode == Prof {
cfg.LogLevel = zapcore.WarnLevel
cpuProfileFile := ProfileFilePath + "cpu"
f, err := os.Create(cpuProfileFile)
if err != nil {
log.Fatalf("could not create CPU profile: %s", err)
}
defer f.Close()
if err := pprof.StartCPUProfile(f); err != nil {
log.Fatalf("could not start CPU profile: %s", err)
}
defer pprof.StopCPUProfile()
defer func() {
memProfileFile := ProfileFilePath + "mem"
f, err := os.Create(memProfileFile)
if err != nil {
log.Fatalf("could not create memory profile: %s", err)
}
defer f.Close()
runtime.GC()
if err := pprof.WriteHeapProfile(f); err != nil {
log.Fatalf("could not write memory profile: %s", err)
}
}()
}
runner.Run(cfg)
},
}
cmd.PersistentFlags().VarP(
enumflag.New(&mode, "mode", RunModeIds, enumflag.EnumCaseInsensitive),
"mode", "m",
"the runner's run mode; can be 'prod' or 'dev', default to 'dev'")
return cmd
}