Summary
A non-standard builtin for semantic version parsing and comparison. Version comparison is a constant need in CI, deployment, and dependency management scripts — yet Bash has no native support, forcing awkward sort -V hacks.
Proposed Syntax
semver <subcommand> [args...]
Proposed Subcommands
| Subcommand |
Description |
semver compare 1.2.3 2.0.0 |
Print -1/0/1 (like strcmp) |
semver gt 1.2.3 2.0.0 |
Exit 0 if first > second |
semver lt 1.2.3 2.0.0 |
Exit 0 if first < second |
semver eq 1.2.3 1.2.3 |
Exit 0 if equal |
semver gte/lte |
Greater/less than or equal |
semver parse 1.2.3-beta.1 |
Output major/minor/patch/pre/build |
semver bump major|minor|patch 1.2.3 |
Increment component |
semver valid 1.2.3 |
Exit 0 if valid semver |
semver sort |
Sort stdin versions |
Use Cases
# Check minimum version
current=$(tool --version | grep -oP '\d+\.\d+\.\d+')
if semver lt "$current" "2.0.0"; then
echo "Upgrade required"
fi
# Bump version in CI
new_version=$(semver bump patch "$(cat VERSION)")
echo "$new_version" > VERSION
# Sort release tags
git tag | semver sort
# Parse components
eval "$(semver parse 1.2.3-beta.1)"
echo "Major: $SEMVER_MAJOR" # 1
llm_hint()
Some("semver: Version comparison. `semver gt 1.2.3 2.0.0`, `semver bump patch 1.0.0` -> 1.0.1. Subcommands: compare/gt/lt/eq/parse/bump/sort/valid.")
Summary
A non-standard builtin for semantic version parsing and comparison. Version comparison is a constant need in CI, deployment, and dependency management scripts — yet Bash has no native support, forcing awkward
sort -Vhacks.Proposed Syntax
Proposed Subcommands
semver compare 1.2.3 2.0.0semver gt 1.2.3 2.0.0semver lt 1.2.3 2.0.0semver eq 1.2.3 1.2.3semver gte/ltesemver parse 1.2.3-beta.1semver bump major|minor|patch 1.2.3semver valid 1.2.3semver sortUse Cases
llm_hint()