zephinzer/godev

View on GitHub
cli.go

Summary

Maintainability
A
0 mins
Test Coverage
package main
 
import (
"os"
 
2: cannot find package "github.com/urfave/cli" in any of:
"github.com/urfave/cli"
)
 
func initCLI() *CLI {
app := &CLI{}
app.config = &Config{}
app.logger = InitLogger(&LoggerConfig{
Name: "cli",
Format: "production",
Level: "trace",
})
app.rawLogger = InitLogger(&LoggerConfig{
Name: "cli",
Format: "raw",
Level: "trace",
})
instance := cli.NewApp()
instance.Name = "godev"
instance.Usage = "a development tool for golang"
instance.Description = "golang development tool with project bootstrap, live-reload, and auto-dependency retrieval powers"
instance.Version = Version
instance.Action = getDefaultAction(app.config)
instance.Commands = []cli.Command{
getInitCommand(app.config),
getTestCommand(app.config),
getVersionCommand(app.config, app.rawLogger),
getViewCommand(app.config, app.rawLogger),
}
instance.Flags = getDefaultFlags()
app.instance = instance
return app
}
 
// CLI is for handling the commands that GoDev takes in and
// sets the correct configuration flags
type CLI struct {
config *Config
instance *cli.App
logger *Logger
rawLogger *Logger
}
 
// Start triggers the CLI manager to parse the inputs and set
// the configuration flags correctly
func (app *CLI) Start(args []string, after func(*Config)) {
app.instance.After = func(c *cli.Context) error {
after(app.config)
return nil
}
if err := app.instance.Run(args); err != nil {
app.logger.Error(err)
app.logger.Warn("exiting with status code 1")
os.Exit(1)
}
}