fn: improve how build handle missing version (#374)

Fixes #373
This commit is contained in:
C Cirello
2016-12-01 18:42:02 +01:00
committed by Travis Reeder
parent d7638625e7
commit c2fa6dca3a
2 changed files with 41 additions and 18 deletions

View File

@@ -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]

View File

@@ -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
}