Skip to main content

Binary distribution for semverctl

Project description

semverctl

Go Report Card lint test codecov version npm PyPI license

CLI for bumping and setting SemVer values in JSON/YAML files and Git tags

Features

  • Semantic Versioning - Strict SemVer 2.0.0 compliance with prerelease and build metadata support
  • 📁 File + Tag Workflows - Explicit bump/set file and bump/set tag commands
  • 🏷️ Git Tag Releases - Bump from latest stable vX.Y.Z tag or set explicit tags
  • 🎯 Path Navigation - Dot-notation paths for nested version fields (e.g., .app.version)
  • 🔢 Numeric Bumping - Bump individual numeric fields for object-style versions
  • 🧪 Dry-Run Mode - Preview changes with unified diff output
  • 🤖 Automation-Friendly JSON - --json output for machine-readable success/error payloads
  • 🔒 Safety Checks - Tag operations require a clean repository state
  • 🌐 Cross-Platform - Linux, macOS, and Windows support (CGO-free)
  • Zero Dependencies - Pure Go implementation with no runtime dependencies
  • 📦 Multiple Distribution Channels - Go install, npm, uv/PyPI, and GitHub Releases

Installation

Go

go install github.com/metalagman/semverctl/cmd/semverctl@latest

npm (Node.js)

npx @metalagman/semverctl version

# Or install globally
npm install -g @metalagman/semverctl
semverctl version

uv/Pip (Python)

uvx semverctl version

# Or install
uv pip install semverctl
semverctl version

Pre-built Binaries

Download pre-built binaries from GitHub Releases:

# Linux/macOS
curl -L https://github.com/metalagman/semverctl/releases/latest/download/semverctl-linux-amd64 -o semverctl
chmod +x semverctl
sudo mv semverctl /usr/local/bin/

# Verify checksum (recommended)
curl -L https://github.com/metalagman/semverctl/releases/latest/download/checksums.txt -o checksums.txt
sha256sum -c checksums.txt

Usage

Bump File Version

Bump the semantic version in a specific JSON or YAML file:

# Bump patch in a file
semverctl bump file package.json

# Bump specific version component
semverctl bump file package.json --minor
semverctl bump file package.json --major

# Bump version at a custom path
semverctl bump file config.yaml --path .app.version

# Preview changes without modifying the file
semverctl bump file package.json --dry-run

# Machine-readable output for automation
semverctl bump file package.json --dry-run --json

Set File Version

Set an explicit version value in a specific file:

# Set version to 1.2.3 in a file
semverctl set file 1.2.3 package.json

# Set version at a custom path
semverctl set file 2.0.0 config.yaml --path .app.version

# Preview changes
semverctl set file 1.0.0 package.json --dry-run

# Machine-readable output for automation
semverctl set file 1.2.3 package.json --json

Bump Tag

Bump from the latest stable git tag (vX.Y.Z) and create a new annotated tag:

# Create next patch tag
semverctl bump tag

# Create next minor tag
semverctl bump tag --minor

# Preview tag creation
semverctl bump tag --dry-run

# Create and push tag to origin
semverctl bump tag --push

# Machine-readable output for automation
semverctl bump tag --dry-run --json

Set Tag

Create an explicit annotated git tag:

# Accepts 1.2.3 or v1.2.3
semverctl set tag 1.2.3
semverctl set tag v2.0.0

# Preview tag creation
semverctl set tag 2.1.0 --dry-run

# Create and push tag to origin
semverctl set tag 2.1.0 --push

# Machine-readable output for automation
semverctl set tag 2.1.0 --json

Numeric Bump

For object-style version fields (e.g., { "Major": 1, "Minor": 2, "Patch": 3 }), you can bump numeric scalar values:

semverctl bump file config.json --numeric --path .version.Patch

This increments the numeric value at the specified path by 1.

Path Syntax

Paths use dot notation to navigate nested structures:

  • .version - Top-level version field
  • .app.version - Nested version field
  • .package.version - Deeply nested field

The leading dot is optional: version and .version are equivalent.

File Formats

Supported formats:

  • JSON (.json)
  • YAML (.yaml, .yml)

Strict SemVer

semverctl follows the Semantic Versioning 2.0.0 specification:

  • Versions must be in format MAJOR.MINOR.PATCH
  • Prerelease and build metadata are supported: 1.0.0-alpha+build.123
  • Leading zeros are not allowed in numeric components
  • When bumping, prerelease and build metadata are cleared

Dry-Run Mode

Use --dry-run to preview file changes or tag actions without mutation:

semverctl bump file package.json --dry-run
semverctl bump tag --dry-run

For file commands, this outputs a unified diff showing what would change.

JSON Output

Use --json for machine-readable automation output:

semverctl bump tag --dry-run --json
semverctl set tag 1.2.3 --json
semverctl bump file package.json --dry-run --json

When --json is enabled, both success and failure responses are printed as JSON to stdout. Failures still return a non-zero exit code.

Exit Codes

  • 0 - Success
  • 1 - Error (invalid arguments, file not found, parse error, etc.)

License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

semverctl-0.0.11-py3-none-win_amd64.whl (3.7 MB view details)

Uploaded Python 3Windows x86-64

semverctl-0.0.11-py3-none-manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded Python 3

semverctl-0.0.11-py3-none-manylinux2014_aarch64.whl (3.5 MB view details)

Uploaded Python 3

semverctl-0.0.11-py3-none-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

semverctl-0.0.11-py3-none-macosx_10_13_x86_64.whl (3.6 MB view details)

Uploaded Python 3macOS 10.13+ x86-64

File details

Details for the file semverctl-0.0.11-py3-none-win_amd64.whl.

File metadata

  • Download URL: semverctl-0.0.11-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for semverctl-0.0.11-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 cea9b36da16d202fb4bb700de040aff1c3c9d54f07807634bd272048b4ba9c42
MD5 91bee20adc7a573d48ba5196e1c77b0b
BLAKE2b-256 72ddbe8ca9d4f44ffe42e214b5c5146607a42573c1bb39bd97334914186161b8

See more details on using hashes here.

File details

Details for the file semverctl-0.0.11-py3-none-manylinux2014_x86_64.whl.

File metadata

  • Download URL: semverctl-0.0.11-py3-none-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for semverctl-0.0.11-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60d81f085b724d28570ee48dc8804de1d8b09f7a298b6d267b4375b24b04ce48
MD5 8974d07a6231914dcef60e94af569dc7
BLAKE2b-256 2efa2ff6b5039360e6f2d8654ad1a27c298467cf4656d6c7aee63397b6a0a949

See more details on using hashes here.

File details

Details for the file semverctl-0.0.11-py3-none-manylinux2014_aarch64.whl.

File metadata

  • Download URL: semverctl-0.0.11-py3-none-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for semverctl-0.0.11-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dc78826420bc7905387b92bd0506598b18f20c168eaacc880fc52e5dbf39d558
MD5 fd7f518089e70bd10943636b38f4d9fa
BLAKE2b-256 2741ca5f4a647e29cdd2c58813b9dfe19a5b4e7497e1d329c8eb80df9f224f48

See more details on using hashes here.

File details

Details for the file semverctl-0.0.11-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: semverctl-0.0.11-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for semverctl-0.0.11-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f915d92c4a7f8a0278b6b251e6b5380601bfa8896be0ff4baa084a6a30252c41
MD5 cb7c6f9d23f2a9e76174bac874ef30a8
BLAKE2b-256 9481314edd18ba3b4ab0b4a6e693232ca672787ba583bd01bdcdd90081991939

See more details on using hashes here.

File details

Details for the file semverctl-0.0.11-py3-none-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: semverctl-0.0.11-py3-none-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: Python 3, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for semverctl-0.0.11-py3-none-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 aef7568af286e0640ac2930ae189d9c77c117f96ccfa0b3e7d0e4fafd3578c17
MD5 722f818265a4ced1f91546bb19f573f7
BLAKE2b-256 52c59ab9b50650e766a94b6149060fa476ee1841b17122614e3e7f1b55bd7fe4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page