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 /main.go | |
| parent | 7d1319f8ac864d5f9b428521264fd0e2e0d8801a (diff) | |
| download | go-bumpver-1c0f54d87023c5d9585492650720883e20d96c75.tar.gz | |
feat: - is for stdin now
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 30 |
1 files changed, 20 insertions, 10 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") |