From c2fa6dca3af8d12de8030acf09ffd6537a06a5bf Mon Sep 17 00:00:00 2001 From: C Cirello Date: Thu, 1 Dec 2016 18:42:02 +0100 Subject: [PATCH] fn: improve how `build` handle missing version (#374) Fixes #373 --- fn/bump.go | 37 +++++++++++++++++++++++-------------- fn/common.go | 22 ++++++++++++++++++---- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/fn/bump.go b/fn/bump.go index e7c8e7270..f555daf13 100644 --- a/fn/bump.go +++ b/fn/bump.go @@ -59,24 +59,11 @@ func (b *bumpcmd) bump(c *cli.Context) error { return err } - funcfile.Name = cleanImageName(funcfile.Name) - if funcfile.Version == "" { - funcfile.Version = initialVersion - } - - s, err := storage.NewVersionStorage("local", funcfile.Version) + funcfile, err = bumpversion(*funcfile) if err != nil { return err } - version := bumper.NewSemverBumper(s, "") - newver, err := version.BumpPatchVersion("", "") - if err != nil { - return err - } - - funcfile.Version = newver.String() - if err := storefuncfile(fn, funcfile); err != nil { return err } @@ -85,6 +72,28 @@ func (b *bumpcmd) bump(c *cli.Context) error { return nil } +func bumpversion(funcfile funcfile) (*funcfile, error) { + funcfile.Name = cleanImageName(funcfile.Name) + if funcfile.Version == "" { + funcfile.Version = initialVersion + return &funcfile, nil + } + + s, err := storage.NewVersionStorage("local", funcfile.Version) + if err != nil { + return nil, err + } + + version := bumper.NewSemverBumper(s, "") + newver, err := version.BumpPatchVersion("", "") + if err != nil { + return nil, err + } + + funcfile.Version = newver.String() + return &funcfile, nil +} + func cleanImageName(name string) string { if i := strings.Index(name, ":"); i != -1 { name = name[:i] diff --git a/fn/common.go b/fn/common.go index c86a4e03f..4b847f712 100644 --- a/fn/common.go +++ b/fn/common.go @@ -23,17 +23,31 @@ func verbwriter(verbose bool) io.Writer { return verbwriter } -func buildfunc(verbwriter io.Writer, path string) (*funcfile, error) { - funcfile, err := parsefuncfile(path) +func buildfunc(verbwriter io.Writer, fn string) (*funcfile, error) { + funcfile, err := parsefuncfile(fn) if err != nil { return nil, err } - if err := localbuild(verbwriter, path, funcfile.Build); err != nil { + if funcfile.Version == "" { + funcfile, err = bumpversion(*funcfile) + if err != nil { + return nil, err + } + if err := storefuncfile(fn, funcfile); err != nil { + return nil, err + } + funcfile, err = parsefuncfile(fn) + if err != nil { + return nil, err + } + } + + if err := localbuild(verbwriter, fn, funcfile.Build); err != nil { return nil, err } - if err := dockerbuild(verbwriter, path, funcfile); err != nil { + if err := dockerbuild(verbwriter, fn, funcfile); err != nil { return nil, err }