From 46bfdccab99e32d5e603e6a74c1464abb48eff93 Mon Sep 17 00:00:00 2001 From: jmlaplante Date: Fri, 30 Nov 2018 10:13:10 +0000 Subject: [PATCH] Add flag to fail publishing if version conflict in NPM --- main.go | 24 +++++++++++++++--------- plugin.go | 22 +++++++++++++--------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/main.go b/main.go index 45f45ee..5d57817 100644 --- a/main.go +++ b/main.go @@ -54,6 +54,11 @@ func main() { Usage: "skip SSL verification", EnvVar: "PLUGIN_SKIP_VERIFY", }, + cli.BoolFlag{ + Name: "fail_if_conflict", + Usage: "fail NPM publish if version already exists", + EnvVar: "PLUGIN_FAIL_IF_CONFLICT", + }, cli.StringFlag{ Name: "env-file", Usage: "source env file", @@ -82,15 +87,16 @@ func run(c *cli.Context) error { 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"), - Access: c.String("access"), + 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"), + FailIfConflict: c.Bool("fail_if_conflict"), + Tag: c.String("tag"), + Access: c.String("access"), }, } diff --git a/plugin.go b/plugin.go index 95d939c..da2ed47 100644 --- a/plugin.go +++ b/plugin.go @@ -19,15 +19,16 @@ import ( type ( // Config for the plugin. Config struct { - Username string - Password string - Token string - Email string - Registry string - Folder string - SkipVerify bool - Tag string - Access string + Username string + Password string + Token string + Email string + Registry string + Folder string + SkipVerify bool + FailIfConflict bool + Tag string + Access string } npmPackage struct { @@ -252,6 +253,9 @@ func shouldPublishPackage(config Config, npm *npmPackage) (bool, error) { if strings.Compare(npm.Version, value) == 0 { log.Info("Version found in the registry") + if config.FailIfConflict { + return false, errors.New("Cannot publish package due to version conflict") + } return false, nil } }