Class: Mixlib::Versioning::Format::OpscodeSemVer
- Inherits:
-
SemVer
- Object
- Mixlib::Versioning::Format
- SemVer
- Mixlib::Versioning::Format::OpscodeSemVer
- Defined in:
- lib/mixlib/versioning/format/opscode_semver.rb
Overview
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
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
11.0.0
11.0.0-alpha.1
11.0.0-alpha1+20121218164140
11.0.0-alpha1+20121218164140.git.207.694b062
Constant Summary collapse
- OPSCODE_BUILD_REGEX =
The pattern is:
YYYYMMDDHHMMSS.git.COMMITS_SINCE.SHA1 /^\d{14}(\.git\.\d+\.[a-f0-9]{7})?$/- OPSCODE_PRERELEASE_REGEX =
Allows the following:
alpha, alpha.0, alpha.1, alpha.2, etc. beta, beta.0, beta.1, beta.2, etc. rc, rc.0, rc.1, rc.2, etc. /^(alpha|beta|rc)(\.\d+)?$/
Constants inherited from SemVer
Instance Attribute Summary
Attributes inherited from Mixlib::Versioning::Format
#build, #input, #iteration, #major, #minor, #patch, #prerelease
Instance Method Summary collapse
Methods inherited from Mixlib::Versioning::Format
#<=>, #build?, #eql?, for, #hash, #in_same_prerelease_line?, #in_same_release_line?, #initialize, #inspect, #prerelease?, #prerelease_build?, #release?, #release_build?, #to_rubygems_string, #to_s, #to_semver_string
Constructor Details
This class inherits a constructor from Mixlib::Versioning::Format
Instance Method Details
#parse(version_string) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/mixlib/versioning/format/opscode_semver.rb', line 72 def parse(version_string) super(version_string) unless @prerelease.nil? unless @prerelease.match(OPSCODE_PRERELEASE_REGEX) raise Mixlib::Versioning::ParseError, "'#{@prerelease}' is not a valid Opscode pre-release signifier!" end end unless @build.nil? unless @build.match(OPSCODE_BUILD_REGEX) raise Mixlib::Versioning::ParseError, "'#{@build}' is not a valid Opscode build signifier!" end end end |