Skip to content
This repository has been archived by the owner on Mar 26, 2023. It is now read-only.

Commit

Permalink
Merge pull request #2 from jcmuller/accept-multiple-versions
Browse files Browse the repository at this point in the history
Accept multiple versions
  • Loading branch information
jcmuller committed Mar 1, 2023
2 parents 3a2ae5c + 2ae525d commit ee0f4ac
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 39 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
# semver
# semver-bumper

A semantic version bumper

## Installation

```
go install github.com/jcmuller/semver@latest
go install github.com/jcmuller/semver-bumper@latest
```

## Usage

```
$ semver v1.2.3
$ semver-bumper v1.2.3
v1.2.4
```

```
# latest tag is v2.1.4
$ git tag --list 'v*' --sort=version:refname --merged | tail -n1 | semver --increment minor
$ git tag --list 'v*' | tail -n1 | semver-bumper --increment minor
v2.2.0
```

```
$ semver --help
Usage of semver:
$ semver-bumper --help
Usage of semver-bumper:
-i, --increment string Increment [major|minor|patch]. Default level is patch (default "patch")
-m, --metadata string Set metadata version
-p, --pre-release string Set pre-release version
-s, --show Show passed in version and exit
-v, --version Show semver's version and exit
-v, --version Show semver-bumper's version and exit
2 changes: 1 addition & 1 deletion flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func setupFlags() {
pflag.StringVarP(&prerelease, "pre-release", "p", "", "Set pre-release version")
pflag.StringVarP(&metadata, "metadata", "m", "", "Set metadata version")
pflag.BoolVarP(&show, "show", "s", false, "Show passed in version and exit")
pflag.BoolVarP(&showVersion, "version", "v", false, "Show semver's version and exit")
pflag.BoolVarP(&showVersion, "version", "v", false, "Show semver-bumper's version and exit")

pflag.Parse()
}
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
module github.com/jcmuller/semver
module github.com/jcmuller/semver-bumper

go 1.20

require (
github.com/Masterminds/semver/v3 v3.2.0
github.com/spf13/pflag v1.0.5
golang.org/x/mod v0.8.0
)
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7Y
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
45 changes: 16 additions & 29 deletions main.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package main

import (
"bufio"
"bytes"
"fmt"
"io"
"os"
"strings"

semver "github.com/Masterminds/semver/v3"
"github.com/Masterminds/semver/v3"
"github.com/spf13/pflag"
gosemver "golang.org/x/mod/semver"
)

func main() {
Expand Down Expand Up @@ -46,31 +46,26 @@ func fail(i any) {
os.Exit(1)
}

func getVersion(args []string) (string, error) {
var version string
func getVersion(versions []string) (string, error) {
var err error
var readFromStdin bool

switch len(args) {
case 0:
if len(versions) == 0 || versions[0] == "-" {
readFromStdin = true
case 1:
version = args[0]
readFromStdin = version == "-"
default:
return "", fmt.Errorf("invalid version supplied. Either pass it in as STDIN, or as the only argument to this program")
}

if readFromStdin {
v, err := readInput(os.Stdin)
versions, err = readInput()
if err != nil {
err = fmt.Errorf("error reading stdin: %w", err)
err = fmt.Errorf("error reading input: %w", err)
return "", err
}

version = string(v)
}

return version, nil
gosemver.Sort(versions)

return versions[len(versions)-1], nil
}

func bumpVersion(ver *semver.Version) error {
Expand Down Expand Up @@ -99,20 +94,12 @@ func bumpVersion(ver *semver.Version) error {
return nil
}

func readInput(reader io.Reader) ([]byte, error) {
buf := new(bytes.Buffer)
scanner := bufio.NewScanner(reader)
for scanner.Scan() {
if _, err := buf.Write(scanner.Bytes()); err != nil {
err = fmt.Errorf("error writing to buffer: %w", err)
return nil, err
}
}

if err := scanner.Err(); err != nil {
err = fmt.Errorf("error scanning: %w", err)
func readInput() ([]string, error) {
allVersions, err := io.ReadAll(os.Stdin)
if err != nil {
err = fmt.Errorf("error reading from stdin: %w", err)
return nil, err
}

return buf.Bytes(), nil
return strings.Split(string(allVersions), "\n"), nil
}
2 changes: 1 addition & 1 deletion version.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ func printProgramVersion() {
panic("could not read build info")
}

fmt.Printf("semver %s\n", info.Main.Version)
fmt.Printf("semver-bumper %s\n", info.Main.Version)
}

0 comments on commit ee0f4ac

Please sign in to comment.