aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Resnick <max@ofmax.li>2024-01-17 21:56:48 -0800
committerMax Resnick <max@ofmax.li>2024-01-17 21:56:48 -0800
commit1c0f54d87023c5d9585492650720883e20d96c75 (patch)
treeb1ec3a5293da6bc7d41a4eee4a97abe2e087c03b
parent7d1319f8ac864d5f9b428521264fd0e2e0d8801a (diff)
downloadgo-bumpver-1c0f54d87023c5d9585492650720883e20d96c75.tar.gz
feat: - is for stdin now
Diffstat (limited to '')
-rw-r--r--main.go30
-rw-r--r--main_test.go22
2 files changed, 31 insertions, 21 deletions
diff --git a/main.go b/main.go
index 38f131e..fb90bd6 100644
--- a/main.go
+++ b/main.go
@@ -103,22 +103,24 @@ func (prf *preReleaseVersion) incPreRelease() (semver.Version, error) {
}
var (
- validArgs = []string{"major", "minor", "patch"}
+ validPartArgs = []string{"major", "minor", "patch"}
preReleaseFmtArgs = make(map[string]string)
preRelease bool
rootCmd = &cobra.Command{
- Use: "semverbump part [major|minor|patch] file [-|file]",
- Short: "A tool for bumping semver git tags.",
- ValidArgs: validArgs,
- Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs),
- Long: `Inspired by the python bump2version tool.`,
+ Use: "bumpver part [major|minor|patch] file [-|file]",
+ Short: "A tool for bumping semver git tags.",
+ Args: cobra.MatchAll(cobra.ExactArgs(2)),
+ Long: `Inspired by the python bump2version tool.`,
RunE: func(cmd *cobra.Command, argz []string) error {
part := argz[0]
var err error
if err := checkArgPart(part); err != nil {
return err
}
- inputScanner := scannerFromInput(cmd.InOrStdin())
+ inputScanner, err := inOrStdinOrFile(cmd.InOrStdin(), argz[1])
+ if err != nil {
+ return err
+ }
tags := []*semver.Version{}
for inputScanner.Scan() {
verText := inputScanner.Text()
@@ -184,14 +186,22 @@ func latestTag(tags []*semver.Version) *semver.Version {
return tags[numTags-1]
}
-func scannerFromInput(inputReader io.Reader) *bufio.Scanner {
+func inOrStdinOrFile(inputReader io.Reader, path string) (*bufio.Scanner, error) {
scanner := bufio.NewScanner(inputReader)
+ // setup file scanner
+ if path != "-" {
+ file, err := os.Open(path)
+ if err != nil {
+ return &bufio.Scanner{}, err
+ }
+ scanner = bufio.NewScanner(file)
+ }
scanner.Split(bufio.ScanLines)
- return scanner
+ return scanner, nil
}
func checkArgPart(arg string) error {
- isValidPart := slices.Contains(validArgs, arg)
+ isValidPart := slices.Contains(validPartArgs, arg)
if !isValidPart {
return errors.New("A valid arg part is required")
diff --git a/main_test.go b/main_test.go
index febbe53..248f6e6 100644
--- a/main_test.go
+++ b/main_test.go
@@ -24,77 +24,77 @@ func TestCmd(t *testing.T) {
}{
{
name: "patch bump",
- input: "patch",
+ input: "patch -",
prior: []string{"1.1.1"},
output: "1.1.2",
isError: nil,
},
{
name: "minor bump",
- input: "minor",
+ input: "minor -",
prior: []string{"1.1.0"},
output: "1.2.0",
isError: nil,
},
{
name: "major bump",
- input: "major",
+ input: "major -",
prior: []string{"1.2.1"},
output: "2.0.0",
isError: nil,
},
{
name: "major bump new prerelease",
- input: "major --prerelease --key-args PR_NUM=11",
+ input: "major --prerelease --key-args PR_NUM=11 -",
prior: []string{"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",
+ input: "major --prerelease --key-args PR_NUM=11 -",
prior: []string{"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",
+ input: "minor --prerelease --key-args PR_NUM=11 -",
prior: []string{"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",
+ input: "minor --prerelease --key-args PR_NUM=11 -",
prior: []string{"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",
+ input: "patch --prerelease --key-args PR_NUM=11 -",
prior: []string{"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",
+ input: "patch --prerelease --key-args PR_NUM=11 -",
prior: []string{"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",
+ input: "patch --prerelease --prerelease-fmt NOTME.$BumpInt -",
prior: []string{"1.2.3"},
output: "1.2.4-NOTME.0",
isError: nil,
},
{
name: "patch bump existing different fmt",
- input: "patch --prerelease --prerelease-fmt NOTME.$BumpInt",
+ input: "patch --prerelease --prerelease-fmt NOTME.$BumpInt -",
prior: []string{"1.2.4-NOTME.0"},
output: "1.2.4-NOTME.1",
isError: nil,