class Mixlib::Versioning::Format::OpscodeSemVer

Defines the format of the semantic version scheme used for Opscode projects. They are SemVer-2.0.0-rc.1 compliant, but we further constrain the allowable strings for prerelease and build signifiers for our own internal standards.

SUPPORTED FORMATS


“‘text MAJOR.MINOR.PATCH MAJOR.MINOR.PATCH-alpha.INDEX MAJOR.MINOR.PATCH-beta.INDEX MAJOR.MINOR.PATCH-rc.INDEX MAJOR.MINOR.PATCH-alpha.INDEX+YYYYMMDDHHMMSS MAJOR.MINOR.PATCH-beta.INDEX+YYYYMMDDHHMMSS MAJOR.MINOR.PATCH-rc.INDEX+YYYYMMDDHHMMSS MAJOR.MINOR.PATCH-alpha.INDEX+YYYYMMDDHHMMSS.git.COMMITS_SINCE.SHA1 MAJOR.MINOR.PATCH-beta.INDEX+YYYYMMDDHHMMSS.git.COMMITS_SINCE.SHA1 MAJOR.MINOR.PATCH-rc.INDEX+YYYYMMDDHHMMSS.git.COMMITS_SINCE.SHA1 “`

EXAMPLES


“‘text 11.0.0 11.0.0-alpha.1 11.0.0-alpha1+20121218164140 11.0.0-alpha1+20121218164140.git.207.694b062 “`

@author Seth Chisamore (<schisamo@chef.io>) @author Christopher Maier (<cm@chef.io>)

Constants

OPSCODE_BUILD_REGEX

The pattern is: ‘YYYYMMDDHHMMSS.git.COMMITS_SINCE.SHA1`

OPSCODE_PRERELEASE_REGEX

Allows the following:

“‘text alpha, alpha.0, alpha.1, alpha.2, etc. beta, beta.0, beta.1, beta.2, etc. rc, rc.0, rc.1, rc.2, etc. “`

Public Instance Methods

parse(version_string) click to toggle source

@see SemVer#parse

Calls superclass method
# File lib/mixlib/versioning/format/opscode_semver.rb, line 71
def parse(version_string)
  super(version_string)

  raise Mixlib::Versioning::ParseError, "'#{@prerelease}' is not a valid Opscode pre-release signifier!" unless @prerelease.nil? || @prerelease.match(OPSCODE_PRERELEASE_REGEX)
  raise Mixlib::Versioning::ParseError, "'#{@build}' is not a valid Opscode build signifier!" unless @build.nil? || @build.match(OPSCODE_BUILD_REGEX)
end