Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

semver-cli

Build StatusGo Report Card

semver-cli is a simple command line tool to compare and manipulate version strings.

It is basically a cli wrapper around the excellent Masterminds semver library, with lots of help from the also excellent Kingpin

usage: semver [<flags>] <command> [<args> ...]
Command-line semver tools. On error, print to stderr and exit -1.
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
-v, --verbose Verbose mode.
Commands:
help [<command>...]
Show help.
satisfies <VERSION> <CONSTRAINTS>
Test if a version satisfies a constraint. Exit 0 if satisfies, 1 if not. If verbose, print an explanation to stdout.
greater <A> <B>
Compare two versions. Exit 0 if the first is greater, 1 if not. If verbose, print greater to stdout.
lesser <A> <B>
Compare two versions. Exit 0 if the first is lesser, 1 if not. If verbose, print lesser to stdout.
equal <A> <B>
Compare two versions. Exit 0 if they are equal, 1 if not.
inc <COMPONENT> <VERSION>
Increment major, minor, or patch component.
get <COMPONENT> <VERSION>
Get major, minor, patch, prerelease or metadata component.
set <COMPONENT> <VERSION> <VALUE>
Set prerelease or metadata component.

Example

Deploy only when the CI tag is within constraints and is greater than what is currently released. For example, with constraints 1.* and a released version of 1.4, a version of 1.5 would be released but a version of 2.0 or 1.2 would not.

#!/bin/bash
CONSTRAINTS=$(jq .labels.constraints manifest.json)
RELEASED=$(jq .image manifest.json | cut -d: -f 2)
semver satisfies "$CI_TAG""$CONSTRAINTS"||exit 1
semver greater "$CI_TAG""$RELEASED"||exit 1
deploy

About

semver-cli is a simple command line tool to compare and manipulate version strings.

Topics

Resources

Stars

48 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages