Skip to content

Commit

Permalink
feat: support v prefix with --v-prefix flag (#34)
Browse files Browse the repository at this point in the history
  • Loading branch information
jcrqr authored Nov 22, 2021
1 parent 1c34012 commit ef45917
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
28 changes: 21 additions & 7 deletions cmd/gitsemver/gitsemver.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@ var bumpCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
project := newProjectOrPanic(cmd)
versionFilenamesAndKeys := getVersionFilenamesAndKeysOrFail(cmd)
vPrefix := getVPrefixOrFail(cmd)
username := getUsernameOrFail(cmd)
password := getPasswordOrFail(cmd)
latest := getLatestVersionOrFail(project)
next := getNextVersionOrFail(project)
next := getNextVersionOrFail(project, vPrefix)

var auth gitsemver.AuthMethod = nil

Expand All @@ -35,7 +36,7 @@ var bumpCmd = &cobra.Command{
}
}

if err := project.Bump(versionFilenamesAndKeys, auth); err != nil {
if err := project.Bump(versionFilenamesAndKeys, auth, vPrefix); err != nil {
log.Fatalln(err)
}

Expand All @@ -48,9 +49,10 @@ var nextCmd = &cobra.Command{
Short: "Outputs the next unreleased version",
Run: func(cmd *cobra.Command, args []string) {
project := newProjectOrPanic(cmd)
next := getNextVersionOrFail(project)
vPrefix := getVPrefixOrFail(cmd)
next := getNextVersionOrFail(project, vPrefix)

fmt.Println(next.String())
fmt.Println(next.Original())
},
}

Expand All @@ -61,7 +63,7 @@ var latestCmd = &cobra.Command{
project := newProjectOrPanic(cmd)
latest := getLatestVersionOrFail(project)

fmt.Println(latest.String())
fmt.Println(latest.Original())
},
}

Expand All @@ -78,6 +80,9 @@ 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\"`)")
bumpCmd.Flags().StringP("username", "u", "", "Username to use in HTTP basic authentication")
bumpCmd.Flags().StringP("password", "P", "", "Password to use in HTTP basic authentication")
bumpCmd.Flags().Bool("v-prefix", false, "Prefix the version with a `v`")

nextCmd.Flags().Bool("v-prefix", false, "Prefix the version with a `v`")
}

func newProjectOrPanic(cmd *cobra.Command) *gitsemver.Project {
Expand Down Expand Up @@ -108,8 +113,8 @@ func getLatestVersionOrFail(project *gitsemver.Project) *semver.Version {
return latest
}

func getNextVersionOrFail(project *gitsemver.Project) *semver.Version {
next, err := project.NextVersion()
func getNextVersionOrFail(project *gitsemver.Project, vPrefix bool) *semver.Version {
next, err := project.NextVersion(vPrefix)
if err != nil {
log.Fatalln(err)
}
Expand Down Expand Up @@ -143,3 +148,12 @@ func getPasswordOrFail(cmd *cobra.Command) string {

return password
}

func getVPrefixOrFail(cmd *cobra.Command) bool {
vPrefix, err := cmd.Flags().GetBool("v-prefix")
if err != nil {
log.Fatalln(err)
}

return vPrefix
}
14 changes: 10 additions & 4 deletions pkg/gitsemver/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ func (p Project) Versions() ([]*semver.Version, error) {
return versions, nil
}

func (p Project) NextVersion() (*semver.Version, error) {
func (p Project) NextVersion(vPrefix bool) (*semver.Version, error) {
versions, err := p.Versions()
if err != nil {
log.Fatal(err)
Expand All @@ -120,7 +120,13 @@ func (p Project) NextVersion() (*semver.Version, error) {
if versionsLen >= 0 {
latestVersion = versions[versionsLen]
} else {
latestVersion, err = semver.NewVersion("0.0.0")
latestVersionStr := "0.0.0"

if vPrefix {
latestVersionStr = fmt.Sprintf("v%s", latestVersionStr)
}

latestVersion, err = semver.NewVersion(latestVersionStr)
if err != nil {
return &semver.Version{}, err
}
Expand Down Expand Up @@ -209,13 +215,13 @@ func (p *Project) NextVersionIncrement() (Increment, error) {
return increment, nil
}

func (p *Project) Bump(versionFilenamesAndKeys []string, auth AuthMethod) error {
func (p *Project) Bump(versionFilenamesAndKeys []string, auth AuthMethod, vPrefix bool) error {
latest, err := p.LatestVersion()
if err != nil {
return err
}

next, err := p.NextVersion()
next, err := p.NextVersion(vPrefix)
if err != nil {
return err
}
Expand Down

0 comments on commit ef45917

Please sign in to comment.