Skip to content

feat(builtins): add semver command (non-standard, version comparison) #568

@chaliy

Description

@chaliy

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.")

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions