diff options
| author | Max Resnick <max@ofmax.li> | 2024-01-17 21:56:48 -0800 |
|---|---|---|
| committer | Max Resnick <max@ofmax.li> | 2024-01-17 21:56:48 -0800 |
| commit | 1c0f54d87023c5d9585492650720883e20d96c75 (patch) | |
| tree | b1ec3a5293da6bc7d41a4eee4a97abe2e087c03b | |
| parent | 7d1319f8ac864d5f9b428521264fd0e2e0d8801a (diff) | |
| download | go-bumpver-1c0f54d87023c5d9585492650720883e20d96c75.tar.gz | |
feat: - is for stdin now
| -rw-r--r-- | main.go | 30 | ||||
| -rw-r--r-- | main_test.go | 22 |
2 files changed, 31 insertions, 21 deletions
@@ -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, |