diff --git a/cmd/lambroll/main.go b/cmd/lambroll/main.go index 3eb8493..dd14c41 100644 --- a/cmd/lambroll/main.go +++ b/cmd/lambroll/main.go @@ -38,6 +38,8 @@ func _main() int { SrcDir: deploy.Flag("src", "function zip archive src dir").Default(".").String(), ExcludeFile: deploy.Flag("exclude-file", "exclude file").Default(lambroll.IgnoreFilename).String(), DryRun: deploy.Flag("dry-run", "dry run").Bool(), + Publish: deploy.Flag("publish", "publish function").Default("true").Bool(), + AliasName: deploy.Flag("alias", "alias name for publish").Default(lambroll.CurrentAliasName).String(), } rollback := kingpin.Command("rollback", "rollback function") diff --git a/create.go b/create.go index ca6a44c..11fdd9b 100644 --- a/create.go +++ b/create.go @@ -62,25 +62,32 @@ func (app *App) create(opt DeployOption, fn *Function) error { version := "(created)" if !*opt.DryRun { - fn.Publish = aws.Bool(true) + fn.Publish = opt.Publish res, err := app.lambda.CreateFunction(fn) if err != nil { return errors.Wrap(err, "failed to create function") } - version = *res.Version - log.Printf("[info] deployed function version %s", version) + if res.Version != nil { + log.Printf("[info] deployed function version %s", *res.Version) + } else { + log.Println("[info] deployed") + } } if err := app.updateTags(fn, opt); err != nil { return err } - log.Printf("[info] creating alias set %s to version %s %s", CurrentAliasName, version, opt.label()) + if !*opt.Publish { + return nil + } + + log.Printf("[info] creating alias set %s to version %s %s", *opt.AliasName, version, opt.label()) if !*opt.DryRun { alias, err := app.lambda.CreateAlias(&lambda.CreateAliasInput{ FunctionName: fn.FunctionName, FunctionVersion: aws.String(version), - Name: aws.String(CurrentAliasName), + Name: aws.String(*opt.AliasName), }) if err != nil { return errors.Wrap(err, "failed to create alias") diff --git a/deploy.go b/deploy.go index 22d6238..97b67bf 100644 --- a/deploy.go +++ b/deploy.go @@ -19,6 +19,8 @@ type DeployOption struct { SrcDir *string Excludes []string ExcludeFile *string + Publish *bool + AliasName *string DryRun *bool } @@ -133,7 +135,7 @@ func (app *App) Deploy(opt DeployOption) error { if *opt.DryRun { codeIn.DryRun = aws.Bool(true) } else { - codeIn.Publish = aws.Bool(true) + codeIn.Publish = opt.Publish } log.Printf("[debug]\n%s", codeIn.String()) @@ -144,12 +146,14 @@ func (app *App) Deploy(opt DeployOption) error { if res.Version != nil { newerVersion = *res.Version log.Printf("[info] deployed version %s %s", *res.Version, opt.label()) + } else { + log.Println("[info] deployed") } - if *opt.DryRun { + if *opt.DryRun || !*opt.Publish { return nil } - return app.updateAliases(*fn.FunctionName, versionAlias{newerVersion, CurrentAliasName}) + return app.updateAliases(*fn.FunctionName, versionAlias{newerVersion, *opt.AliasName}) } func (app *App) updateAliases(functionName string, vs ...versionAlias) error {