aboutsummaryrefslogtreecommitdiff
path: root/main.go
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 /main.go
parent7d1319f8ac864d5f9b428521264fd0e2e0d8801a (diff)
downloadgo-bumpver-1c0f54d87023c5d9585492650720883e20d96c75.tar.gz
feat: - is for stdin now
Diffstat (limited to '')
-rw-r--r--main.go30
1 files changed, 20 insertions, 10 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")