Files
plugin-drone-download/main.go
T
2019-03-31 23:50:24 +02:00

89 lines
1.9 KiB
Go

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()
}