package main import ( "log" "os" "github.com/pkg/errors" "github.com/urfave/cli" ) var ( version = "unknown" ) func main() { app := cli.NewApp() app.Name = "download plugin" app.Usage = "download plugin" app.Action = run app.Version = version app.Flags = []cli.Flag{ cli.StringFlag{ Name: "source", Usage: "source url for the download", EnvVar: "PLUGIN_SOURCE", }, cli.StringFlag{ Name: "destination", Usage: "destination for the download", EnvVar: "PLUGIN_DESTINATION", }, cli.StringFlag{ Name: "authorization", Usage: "value to send in the authorization header", EnvVar: "PLUGIN_AUTHORIZATION,DOWNLOAD_AUTHORIZATION", }, cli.StringFlag{ Name: "username", Usage: "username for basic auth", EnvVar: "PLUGIN_USERNAME,DOWNLOAD_USERNAME", }, cli.StringFlag{ Name: "password", Usage: "password for basic auth", EnvVar: "PLUGIN_PASSWORD,DOWNLOAD_PASSWORD", }, cli.BoolFlag{ Name: "skip-verify", Usage: "skip ssl verification", EnvVar: "PLUGIN_SKIP_VERIFY", }, cli.StringFlag{ Name: "md5-checksum", Usage: "checksum in md5 format", EnvVar: "PLUGIN_MD5", }, cli.StringFlag{ Name: "sha256-checksum", Usage: "checksum in sha256 format", EnvVar: "PLUGIN_SHA256,PLUGIN_SHA265", }, } if err := app.Run(os.Args); err != nil { log.Fatal(err) } } func run(c *cli.Context) error { plugin := Plugin{ Config: Config{ Source: c.String("source"), Destination: c.String("destination"), Authorization: c.String("authorization"), Username: c.String("username"), Password: c.String("password"), SkipVerify: c.Bool("skip-verify"), MD5: c.String("md5-checksum"), SHA256: c.String("sha256-checksum"), }, } if plugin.Config.Source == "" { return errors.New("Missing source URL") } return plugin.Exec() }