package main import ( "fmt" "os" "github.com/Sirupsen/logrus" "github.com/joho/godotenv" "github.com/urfave/cli" ) var build = "0" // build number set at compile-time func main() { app := cli.NewApp() app.Name = "npm plugin" app.Usage = "npm plugin" app.Action = run app.Version = fmt.Sprintf("1.0.%s", build) app.Flags = []cli.Flag{ cli.StringFlag{ Name: "username", Usage: "NPM username", EnvVar: "PLUGIN_USERNAME,NPM_USERNAME", }, cli.StringFlag{ Name: "password", Usage: "NPM password", EnvVar: "PLUGIN_PASSWORD,NPM_PASSWORD", }, cli.StringFlag{ Name: "email", Usage: "NPM email", EnvVar: "PLUGIN_EMAIL,NPM_EMAIL", }, cli.StringFlag{ Name: "token", Usage: "NPM deploy token", EnvVar: "PLUGIN_TOKEN,NPM_TOKEN", }, cli.StringFlag{ Name: "registry", Usage: "NPM registry", Value: GlobalRegistry, EnvVar: "PLUGIN_REGISTRY,NPM_REGISTRY", }, cli.StringFlag{ Name: "folder", Usage: "folder containing package.json", EnvVar: "PLUGIN_FOLDER", }, cli.BoolFlag{ Name: "skip_verify", Usage: "skip SSL verification", EnvVar: "PLUGIN_SKIP_VERIFY", }, cli.StringFlag{ Name: "env-file", Usage: "source env file", }, cli.StringFlag{ Name: "tag", Usage: "NPM publish tag", EnvVar: "PLUGIN_TAG", }, } if err := app.Run(os.Args); err != nil { logrus.Fatal(err) } } func run(c *cli.Context) error { if c.String("env-file") != "" { _ = godotenv.Load(c.String("env-file")) } plugin := Plugin{ Config: Config{ Username: c.String("username"), Password: c.String("password"), Token: c.String("token"), Email: c.String("email"), Registry: c.String("registry"), Folder: c.String("folder"), SkipVerify: c.Bool("skip_verify"), Tag: c.String("tag"), }, } return plugin.Exec() }