Project

semverify

0.0
There's a lot of open issues
Parse, compare, and increment RubyGem versions with the 'semverify' CLI command or the 'Semverify::Semver' class.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 13.1
~> 3.6
~> 3.12
~> 1.59
~> 0.22
~> 0.9, >= 0.9.28
~> 0.9

Runtime

~> 1.3
 Project Readme

Version Boss

Gem Version Documentation Change Log Build Status Maintainability Test Coverage

Parse, compare, and increment Gem and Semver versions.

This gem installs the gem-version-boss CLI tool to display and increment a gem's version based on SemVer rules.

gem-version-boss can replace the bump command from the bump gem for incrementing gem version strings.

How gem-version-boss differs from bump:

  • gem-version-boss can manage pre-release versions
  • bump can commit and tag the version file changes it makes. There is no plan to add this functionality to gem-version-boss.
  • bump can update the version in extra files you to specify extra files to increment the version in

Example CLI commands:

# Increment the gem version
gem-version-boss {next-major|next-minor|next-patch} [--pre [--pretype=TYPE]] [--dryrun]
gem-version-boss next-pre [--pretype=TYPE] [--dryrun]
gem-version-boss next-release [--dryrun]

# Command to display the current gem version
gem-version-boss current

# Display the gem version file
gem-version-boss file

# Validate that a version conforms to SemVer 2.0.0
gem-version-boss validate VERSION

# Get more detailed help for each command listed above
gem-version-boss help [COMMAND]
  • Installation
  • Command Line
    • Usage
    • Examples
  • Library Usage
    • VersionBoss::Gem classes
    • VersionBoss::Semver classes
  • Development
  • Contributing
  • License

Installation

Install the gem and add to the application's Gemfile by executing:

bundle add version_boss

If bundler is not being used to manage dependencies, install the gem by executing:

gem install version_boss --group=development

Command Line

Usage

The gem-version-boss command line has built in help for all its commands. List the commands by invoking gem-version-boss with no arguments or gem-version-boss help as follows:

gem-version-boss help

The output is the following:

Commands:
  gem-version-boss current [-q]                                   # Show the current gem version
  gem-version-boss file [-q]                                      # Show the path to the file containing the gem version
  gem-version-boss help [COMMAND]                                 # Describe available commands or one specific command
  gem-version-boss next-major [VERSION] [-p [-t TYPE]] [-n] [-q]  # Increment the version's major part
  gem-version-boss next-minor [VERSION] [-p [-t TYPE]] [-n] [-q]  # Increment the version's minor part
  gem-version-boss next-patch [VERSION] [-p [-t TYPE]] [-n] [-q]  # Increment the version's patch part
  gem-version-boss next-pre [VERSION] [-t TYPE] [-n] [-q]         # Increment the version's pre-release part
  gem-version-boss next-release [VERSION] [-n] [-q]               # Increment a pre-release version to the release version
  gem-version-boss validate VERSION [-q]                          # Validate the given version

The gem-version-boss help COMMAND command will give further help for a specific command:

gem-version-boss help current

The output is the following:

Usage:
  gem-version-boss current [-q]

Options:
  -q, [--quiet], [--no-quiet], [--skip-quiet]  # Do not print the current version to stdout

Description:
  Output the current gem version from the file that stores the gem version.

  The command fails if the gem version could not be found or is invalid.

  Use `--quiet` to ensure that a gem version could be found and is valid without producing any output.

Examples

gem-version-boss current # 0.1.0

gem-version-boss validate 1.0.0 # exitcode=0
gem-version-boss validate bad_version # exitcode=1

gem-version-boss next-patch # 0.1.0 -> 0.1.1
gem-version-boss next-minor # 0.1.1 -> 0.2.0
gem-version-boss next-major # 0.2.0 -> 1.0.0

# Pre-release with default pre-release type
gem-version-boss next-major --pre # 0.1.1 -> 1.0.0.pre1

# Pre-release with non-default pre-release type
gem-version-boss next-major --pre --pre-type=alpha # 0.1.1 -> 2.0.0-alpha1

# Increment pre-release
gem-version-boss next-pre # 1.0.0-alpha1 -> 1.0.0-alpha2

# Change the pre-release type
gem-version-boss pre --pre-type=beta # 1.0.0-alpha2 -> 1.0.0-beta1

# Create release from pre-release
gem-version-boss release # 1.0.0-beta1 -> 1.0.0

This gem also provides the following classes:

Library Usage

Detailed API documenation is hosted on rubygems.org.

The main classes are:

VersionBoss::Gem classes

  • VersionBoss::Gem::Version knows how to parse, validate, and compare Ruby Gem version strings.

  • VersionBoss::Gem::IncrementableVersion knows how to increment Ruby Gem version strings according to SemVer rules.

  • VersionBoss::Gem::VersionFileFactory: find the gem's version file and returns a VersionBoss::Gem::VersionFile that knows it's path, the contained version, and how to update the version file with a new version.

VersionBoss::Semver classes

  • VersionBoss::Semver::Version knows how to parse, validate, and compare version strings that conform to SemVer 2.0.0

  • VersionBoss::Semver::IncrementableVersion knows how to increment Semver version strings according to SemVer rules.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/main-branch/version_boss.

License

The gem is available as open source under the terms of the MIT License.