aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--main.go18
-rw-r--r--main_test.go65
2 files changed, 73 insertions, 10 deletions
diff --git a/main.go b/main.go
index e57bf8a..5a09113 100644
--- a/main.go
+++ b/main.go
@@ -102,7 +102,6 @@ var (
errNoRemoteFound = errors.New("No remotes found")
clonedRepo = &git.Repository{}
localRepo = &git.Repository{}
- repoDir string
remoteName string
preReleaseFmtArgs map[string]string = make(map[string]string)
preRelease bool
@@ -115,6 +114,7 @@ var (
RunE: func(cmd *cobra.Command, argz []string) error {
part := argz[0]
preRelease := viper.GetBool("prerelease")
+ preReleaseFmtString := viper.GetString("prerelease-fmt")
// remoteName := viper.GetString("remote-name")
repoDir := viper.GetString("repo-dir")
@@ -148,7 +148,8 @@ var (
nextVersion = lastVersion.IncPatch()
case "prerelease":
preRelVersion := preReleaseVersion{
- []string{"PR", "$KeyArg PR_NUM"},
+ // []string{"PR", "$KeyArg PR_NUM"},
+ parseFmtString(preReleaseFmtString),
preReleaseFmtArgs,
lastVersion,
versionPart,
@@ -194,6 +195,10 @@ func findTags(repo *git.Repository) ([]*semver.Version, error) {
return repoTags, nil
}
+func parseFmtString(toSplit string) []string {
+ return strings.Split(toSplit, ".")
+}
+
func main() {
if err := rootCmd.Execute(); err != nil {
fmt.Fprintln(os.Stderr, err)
@@ -203,23 +208,22 @@ func main() {
func init() {
// global flags
- viper.SetConfigName(".version")
+ viper.SetConfigName(".version.toml")
viper.SetConfigType("toml")
viper.AddConfigPath(".")
- cwd := ""
err := viper.ReadInConfig() // Find and read the config file
if err != nil { // Handle errors reading the config file
fmt.Println(err)
- cwd, err = os.Getwd()
}
+ cwd, err := os.Getwd()
if err != nil {
log.Fatal(err)
}
rootCmd.PersistentFlags().BoolVarP(&preRelease, "prerelease", "p", false, "create a prerelease tag for the (major|minor|patch)")
- rootCmd.PersistentFlags().String("prerelease-fmt", "PR $KeyArg PR_NUM $BumpInt", "The format string for prerelease versions")
+ rootCmd.PersistentFlags().String("prerelease-fmt", "PR.$KeyArg PR_NUM.$BumpInt", "The format string for prerelease versions")
rootCmd.PersistentFlags().StringToStringVarP(&preReleaseFmtArgs, "key-args", "k", nil, "key=arg for the fmt string")
- repoDir = *rootCmd.PersistentFlags().String("repo-dir", cwd, "repo to examine")
+ rootCmd.PersistentFlags().String("repo-dir", cwd, "repo to examine")
remoteName = *rootCmd.PersistentFlags().String("remote-name", "origin", "remote to search and push to")
viper.BindPFlags(rootCmd.PersistentFlags())
}
diff --git a/main_test.go b/main_test.go
index e333064..ba321b1 100644
--- a/main_test.go
+++ b/main_test.go
@@ -3,6 +3,7 @@ package main
import (
"bytes"
"log"
+ "strings"
"testing"
"github.com/Masterminds/semver/v3"
@@ -10,6 +11,7 @@ import (
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing"
"github.com/go-git/go-git/v5/storage/filesystem"
+ "github.com/spf13/viper"
)
var (
@@ -70,13 +72,70 @@ func TestCmd(t *testing.T) {
output: "2.0.0",
isError: nil,
},
+ {
+ name: "major bump new prerelease",
+ input: "major --prerelease --key-args PR_NUM=11",
+ prior: "1.2.1",
+ output: "2.0.0-PR.11.0",
+ isError: nil,
+ },
+ {
+ name: "major bump existing prerelease bump",
+ input: "major --prerelease --key-args PR_NUM=11",
+ prior: "2.0.0-PR.11.0",
+ output: "2.0.0-PR.11.1",
+ isError: nil,
+ },
+ {
+ name: "minor bump new prerelease",
+ input: "minor --prerelease --key-args PR_NUM=11",
+ prior: "1.2.1",
+ output: "1.3.0-PR.11.0",
+ isError: nil,
+ },
+ {
+ name: "minor bump existing prerelease bump",
+ input: "minor --prerelease --key-args PR_NUM=11",
+ prior: "1.3.0-PR.11.0",
+ output: "1.3.0-PR.11.1",
+ isError: nil,
+ },
+ {
+ name: "patch bump new prerelease",
+ input: "patch --prerelease --key-args PR_NUM=11",
+ prior: "1.2.1",
+ output: "1.2.2-PR.11.0",
+ isError: nil,
+ },
+ {
+ name: "patch bump existing prerelease bump",
+ input: "patch --prerelease --key-args PR_NUM=11",
+ prior: "1.2.2-PR.11.0",
+ output: "1.2.2-PR.11.1",
+ isError: nil,
+ },
+ {
+ name: "patch bump different fmt",
+ input: "patch --prerelease --prerelease-fmt NOTME.$BumpInt",
+ prior: "1.2.3",
+ output: "1.2.4-NOTME.0",
+ isError: nil,
+ },
+ {
+ name: "patch bump existing different fmt",
+ input: "patch --prerelease --prerelease-fmt NOTME.$BumpInt",
+ prior: "1.2.4-NOTME.0",
+ output: "1.2.4-NOTME.1",
+ isError: nil,
+ },
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
logOut := &bytes.Buffer{}
- repoDir = t.TempDir()
+ repoDir := t.TempDir()
testRepo := newRepo(repoDir)
+ viper.Set("repo-dir", repoDir)
wt, _ := testRepo.Worktree()
hash, err := makeCommit(wt)
if err != nil {
@@ -88,12 +147,12 @@ func TestCmd(t *testing.T) {
t.Fatal(err)
}
- rootCmd.SetArgs([]string{test.input})
+ rootCmd.SetArgs(strings.Split(test.input, " "))
rootCmd.SetOut(logOut)
rootCmd.SetErr(logOut)
result := rootCmd.Execute()
if result != test.isError {
- t.Fatal("didn't expect this")
+ t.Fatalf("didn't expect %s", result)
}
out := logOut.String()
t.Logf("stuff %s", out)