diff --git a/functionurl.go b/functionurl.go index 51c0472..3432b31 100644 --- a/functionurl.go +++ b/functionurl.go @@ -424,7 +424,7 @@ func (app *App) initFunctionURL(ctx context.Context, fn *Function, exists bool, return err } } - if err := app.saveFile(name, b, os.FileMode(0644)); err != nil { + if err := app.saveFile(name, b, os.FileMode(0644), opt.ForceOverwrite); err != nil { return err } diff --git a/init.go b/init.go index b7f25a4..de7bc93 100644 --- a/init.go +++ b/init.go @@ -17,11 +17,12 @@ import ( // InitOption represents options for Init() type InitOption struct { - FunctionName *string `help:"Function name for init" required:"true" default:""` - DownloadZip bool `name:"download" help:"Download function.zip" default:"false"` - Jsonnet bool `default:"false" help:"render function.json as jsonnet"` - Qualifier *string `help:"function version or alias"` - FunctionURL bool `help:"create function url definition file" default:"false"` + FunctionName *string `help:"Function name for init" required:"true" default:""` + DownloadZip bool `name:"download" help:"Download function.zip" default:"false"` + Jsonnet bool `help:"render function.json as jsonnet" default:"false"` + Qualifier *string `help:"function version or alias"` + FunctionURL bool `help:"create function url definition file" default:"false"` + ForceOverwrite bool `help:"Overwrite existing files without prompting" default:"false"` } // Init initializes function.json @@ -90,6 +91,7 @@ func (app *App) Init(ctx context.Context, opt *InitOption) error { IgnoreFilename, []byte(strings.Join(DefaultExcludes, "\n")+"\n"), os.FileMode(0644), + opt.ForceOverwrite, ) if err != nil { return err @@ -109,7 +111,7 @@ func (app *App) Init(ctx context.Context, opt *InitOption) error { return err } } - if err := app.saveFile(name, b, os.FileMode(0644)); err != nil { + if err := app.saveFile(name, b, os.FileMode(0644), opt.ForceOverwrite); err != nil { return err } diff --git a/utils.go b/utils.go index fe51e20..f7ae0ed 100644 --- a/utils.go +++ b/utils.go @@ -12,9 +12,9 @@ import ( "github.com/google/go-jsonnet/formatter" ) -func (app *App) saveFile(path string, b []byte, mode os.FileMode) error { +func (app *App) saveFile(path string, b []byte, mode os.FileMode, force bool) error { if _, err := os.Stat(path); err == nil { - ok := prompter.YN(fmt.Sprintf("Overwrite existing file %s?", path), false) + ok := force || prompter.YN(fmt.Sprintf("Overwrite existing file %s?", path), false) if !ok { return nil }