From 1c0f54d87023c5d9585492650720883e20d96c75 Mon Sep 17 00:00:00 2001 From: Max Resnick Date: Wed, 17 Jan 2024 21:56:48 -0800 Subject: feat: - is for stdin now --- main.go | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'main.go') 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") -- cgit v1.2.3