From 9d5f9206a8652682cb8c4475758c1808c6f9c25f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Cerqueira?= Date: Wed, 13 Oct 2021 10:02:55 +0100 Subject: [PATCH 1/3] feat: make git_semver package public --- {internal => pkg}/git-semver/project.go | 0 {internal => pkg}/git-semver/version_file.go | 0 {internal => pkg}/git/mod.go | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {internal => pkg}/git-semver/project.go (100%) rename {internal => pkg}/git-semver/version_file.go (100%) rename {internal => pkg}/git/mod.go (100%) diff --git a/internal/git-semver/project.go b/pkg/git-semver/project.go similarity index 100% rename from internal/git-semver/project.go rename to pkg/git-semver/project.go diff --git a/internal/git-semver/version_file.go b/pkg/git-semver/version_file.go similarity index 100% rename from internal/git-semver/version_file.go rename to pkg/git-semver/version_file.go diff --git a/internal/git/mod.go b/pkg/git/mod.go similarity index 100% rename from internal/git/mod.go rename to pkg/git/mod.go From 3f473932989be98550249afbc0e1caa8b2b28a84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Cerqueira?= Date: Thu, 14 Oct 2021 11:31:52 +0100 Subject: [PATCH 2/3] fix: moved bump logic to git_semver package --- cmd/git-semver/git-semver.go | 48 +++++++----------------------------- {pkg => internal}/git/mod.go | 0 pkg/git-semver/project.go | 43 ++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 39 deletions(-) rename {pkg => internal}/git/mod.go (100%) diff --git a/cmd/git-semver/git-semver.go b/cmd/git-semver/git-semver.go index 68c5858..ad14e96 100644 --- a/cmd/git-semver/git-semver.go +++ b/cmd/git-semver/git-semver.go @@ -6,8 +6,7 @@ import ( "os" "github.com/Masterminds/semver" - "github.com/carlsberg/git-semver/internal/git" - git_semver "github.com/carlsberg/git-semver/internal/git-semver" + git_semver "github.com/carlsberg/git-semver/pkg/git-semver" "github.com/spf13/cobra" ) @@ -25,25 +24,8 @@ var bumpCmd = &cobra.Command{ latest := getLatestVersionOrFail(project) next := getNextVersionOrFail(project) - if len(versionFilenamesAndKeys) > 0 { - for _, filenameAndKey := range versionFilenamesAndKeys { - updateVersionFileOrPanic(filenameAndKey, latest, next) - } - - if err := git.CreateCommit(project.Repo(), fmt.Sprintf("bump: %s -> %s", latest.String(), next.String())); err != nil { - log.Fatal(err) - } - } - - tagName := git_semver.TagNameFromProjectAndVersion(project, next) - tagMessage := fmt.Sprintf("Release %s", tagName) - - if err := git.CreateTag(project.Repo(), tagName, tagMessage); err != nil { - log.Fatal(err) - } - - if err := git.PushTagToRemotes(project.Repo(), tagName); err != nil { - log.Fatal(err) + if err := project.Bump(versionFilenamesAndKeys); err != nil { + log.Fatalln(err) } fmt.Printf("bump %s from %s to %s\n", project.Dir(), latest, next) @@ -88,38 +70,26 @@ func init() { func newProjectOrPanic(cmd *cobra.Command) *git_semver.Project { cwd, err := os.Getwd() if err != nil { - log.Fatal(err) + log.Fatalln(err) } dir, err := cmd.Flags().GetString("project") if err != nil { - log.Fatal(err) + log.Fatalln(err) } project, err := git_semver.NewProject(cwd, dir) if err != nil { - log.Fatal(err) + log.Fatalln(err) } return project } -func updateVersionFileOrPanic(filenameAndKey string, latest, next *semver.Version) { - vf, err := git_semver.NewVersionFile("./", filenameAndKey) - if err != nil { - log.Fatal(err) - } - - vf.UpdateVersion(latest, next) - if err != nil { - log.Fatal(err) - } -} - func getLatestVersionOrFail(project *git_semver.Project) *semver.Version { latest, err := project.LatestVersion() if err != nil { - log.Fatal(err) + log.Fatalln(err) } return latest @@ -128,7 +98,7 @@ func getLatestVersionOrFail(project *git_semver.Project) *semver.Version { func getNextVersionOrFail(project *git_semver.Project) *semver.Version { next, err := project.NextVersion() if err != nil { - log.Fatal(err) + log.Fatalln(err) } return next @@ -137,7 +107,7 @@ func getNextVersionOrFail(project *git_semver.Project) *semver.Version { func getVersionFilenamesAndKeysOrFail(cmd *cobra.Command) []string { versionFilenamesAndKeys, err := cmd.Flags().GetStringArray("version-file") if err != nil { - log.Fatal(err) + log.Fatalln(err) } return versionFilenamesAndKeys diff --git a/pkg/git/mod.go b/internal/git/mod.go similarity index 100% rename from pkg/git/mod.go rename to internal/git/mod.go diff --git a/pkg/git-semver/project.go b/pkg/git-semver/project.go index e0d047f..66bc681 100644 --- a/pkg/git-semver/project.go +++ b/pkg/git-semver/project.go @@ -216,6 +216,49 @@ func (p *Project) NextVersionIncrement() (Increment, error) { return increment, nil } +func (p *Project) Bump(versionFilenamesAndKeys []string) error { + latest, err := p.LatestVersion() + if err != nil { + return err + } + + next, err := p.NextVersion() + if err != nil { + return err + } + + if len(versionFilenamesAndKeys) > 0 { + for _, filenameAndKey := range versionFilenamesAndKeys { + vf, err := NewVersionFile("./", filenameAndKey) + if err != nil { + return err + } + + vf.UpdateVersion(latest, next) + if err != nil { + return err + } + } + + if err := git.CreateCommit(p.Repo(), fmt.Sprintf("bump: %s -> %s", latest.String(), next.String())); err != nil { + return err + } + } + + tagName := TagNameFromProjectAndVersion(p, next) + tagMessage := fmt.Sprintf("Release %s", tagName) + + if err := git.CreateTag(p.Repo(), tagName, tagMessage); err != nil { + return err + } + + if err := git.PushTagToRemotes(p.Repo(), tagName); err != nil { + return err + } + + return nil +} + func TagNameFromProjectAndVersion(p *Project, v *semver.Version) string { if p.IsSubProject() { return fmt.Sprintf("%s/%s", p.dir, v.Original()) From bd4b64b32c713237ed854b05dccfdf3e538a21d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Cerqueira?= Date: Fri, 15 Oct 2021 11:08:31 +0100 Subject: [PATCH 3/3] fix: rename packages to gitsemver --- .../git-semver.go => gitsemver/gitsemver.go} | 12 ++++++------ main.go | 4 ++-- pkg/{git-semver => gitsemver}/project.go | 2 +- pkg/{git-semver => gitsemver}/version_file.go | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) rename cmd/{git-semver/git-semver.go => gitsemver/gitsemver.go} (86%) rename pkg/{git-semver => gitsemver}/project.go (99%) rename pkg/{git-semver => gitsemver}/version_file.go (98%) diff --git a/cmd/git-semver/git-semver.go b/cmd/gitsemver/gitsemver.go similarity index 86% rename from cmd/git-semver/git-semver.go rename to cmd/gitsemver/gitsemver.go index ad14e96..52406e3 100644 --- a/cmd/git-semver/git-semver.go +++ b/cmd/gitsemver/gitsemver.go @@ -1,4 +1,4 @@ -package git_semver +package gitsemver import ( "fmt" @@ -6,7 +6,7 @@ import ( "os" "github.com/Masterminds/semver" - git_semver "github.com/carlsberg/git-semver/pkg/git-semver" + "github.com/carlsberg/git-semver/pkg/gitsemver" "github.com/spf13/cobra" ) @@ -67,7 +67,7 @@ func init() { bumpCmd.Flags().StringArrayP("version-file", "f", make([]string, 0), "Specify version files to be updated with the new version in the format `filename:key` (i.e. `package.json:\"version\"`)") } -func newProjectOrPanic(cmd *cobra.Command) *git_semver.Project { +func newProjectOrPanic(cmd *cobra.Command) *gitsemver.Project { cwd, err := os.Getwd() if err != nil { log.Fatalln(err) @@ -78,7 +78,7 @@ func newProjectOrPanic(cmd *cobra.Command) *git_semver.Project { log.Fatalln(err) } - project, err := git_semver.NewProject(cwd, dir) + project, err := gitsemver.NewProject(cwd, dir) if err != nil { log.Fatalln(err) } @@ -86,7 +86,7 @@ func newProjectOrPanic(cmd *cobra.Command) *git_semver.Project { return project } -func getLatestVersionOrFail(project *git_semver.Project) *semver.Version { +func getLatestVersionOrFail(project *gitsemver.Project) *semver.Version { latest, err := project.LatestVersion() if err != nil { log.Fatalln(err) @@ -95,7 +95,7 @@ func getLatestVersionOrFail(project *git_semver.Project) *semver.Version { return latest } -func getNextVersionOrFail(project *git_semver.Project) *semver.Version { +func getNextVersionOrFail(project *gitsemver.Project) *semver.Version { next, err := project.NextVersion() if err != nil { log.Fatalln(err) diff --git a/main.go b/main.go index eae47fd..f621384 100644 --- a/main.go +++ b/main.go @@ -1,10 +1,10 @@ package main import ( - git_semver "github.com/carlsberg/git-semver/cmd/git-semver" + "github.com/carlsberg/git-semver/cmd/gitsemver" "github.com/spf13/cobra" ) func main() { - cobra.CheckErr(git_semver.Execute()) + cobra.CheckErr(gitsemver.Execute()) } diff --git a/pkg/git-semver/project.go b/pkg/gitsemver/project.go similarity index 99% rename from pkg/git-semver/project.go rename to pkg/gitsemver/project.go index 66bc681..ff8ee61 100644 --- a/pkg/git-semver/project.go +++ b/pkg/gitsemver/project.go @@ -1,4 +1,4 @@ -package git_semver +package gitsemver import ( "errors" diff --git a/pkg/git-semver/version_file.go b/pkg/gitsemver/version_file.go similarity index 98% rename from pkg/git-semver/version_file.go rename to pkg/gitsemver/version_file.go index 70bd4a1..a5d886a 100644 --- a/pkg/git-semver/version_file.go +++ b/pkg/gitsemver/version_file.go @@ -1,4 +1,4 @@ -package git_semver +package gitsemver import ( "fmt"