Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 14 additions & 44 deletions cmd/git-semver/git-semver.go → cmd/gitsemver/gitsemver.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package git_semver
package gitsemver

import (
"fmt"
"log"
"os"

"github.com/Masterminds/semver"
"github.com/carlsberg/git-semver/internal/git"
git_semver "github.com/carlsberg/git-semver/internal/git-semver"
"github.com/carlsberg/git-semver/pkg/gitsemver"
"github.com/spf13/cobra"
)

Expand All @@ -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)
Expand Down Expand Up @@ -85,50 +67,38 @@ 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.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)
project, err := gitsemver.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 {
func getLatestVersionOrFail(project *gitsemver.Project) *semver.Version {
latest, err := project.LatestVersion()
if err != nil {
log.Fatal(err)
log.Fatalln(err)
}

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.Fatal(err)
log.Fatalln(err)
}

return next
Expand All @@ -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
Expand Down
4 changes: 2 additions & 2 deletions main.go
Original file line number Diff line number Diff line change
@@ -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())
}
45 changes: 44 additions & 1 deletion internal/git-semver/project.go → pkg/gitsemver/project.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package git_semver
package gitsemver

import (
"errors"
Expand Down Expand Up @@ -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())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package git_semver
package gitsemver

import (
"fmt"
Expand Down