Skip to content

Instantly share code, notes, and snippets.

@marshyon
Created December 18, 2019 18:11
Show Gist options
  • Save marshyon/6a3f75e299b75d55f0a9450e52a0fcbb to your computer and use it in GitHub Desktop.
Save marshyon/6a3f75e299b75d55f0a9450e52a0fcbb to your computer and use it in GitHub Desktop.
semantic versioning sort and bump
package main
import (
"bytes"
"fmt"
"os"
"os/exec"
"strings"
"github.com/blang/semver"
)
func main() {
var (
e error
l string
versionList semver.Versions
)
exec.Command("git", "fetch", "--tags").Run()
cmd := exec.Command("git", "tag", "-l")
b, _ := cmd.Output()
bfr := bytes.NewBuffer(b)
for e == nil {
l, e = bfr.ReadString('\n')
vString := strings.TrimSuffix(l, "\n")
fmt.Printf("data from git is [%s]\n", vString)
if v, ve := semver.Make(strings.Replace(strings.TrimSpace(l), "v", "", -1)); ve == nil {
versionList = append(versionList, v)
}
}
semver.Sort(versionList)
for _, val := range versionList {
fmt.Printf(">> %s\n", val)
}
currentVersion := versionList[len(versionList)-1]
switch os.Args[1] {
case "bump_patch":
currentVersion.Patch++
case "bump_minor":
currentVersion.Patch = 0
currentVersion.Minor++
case "bump_major":
currentVersion.Patch = 0
currentVersion.Minor = 0
currentVersion.Major++
}
fmt.Printf("v%s\n", currentVersion)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment