class XSemVer::Runner
Contains the logic for performing SemVer operations from the command line.
def self.help_text
def self.help_text <<-HELP er commands ----------- [ialze] # initialize semantic version tracking rement] major | minor | patch # increment a specific version number release] [STRING] # set a pre-release version suffix cial] [STRING] # set a pre-release version suffix (deprecated) [data] [STRING] # set a metadata version suffix at # printf like format: %M, %m, %p, %s # equivalent to format 'v%M.%m.%p%s' SE READ http://semver.org HELP end
def initialize(*args)
Run a semver command. Raise a CommandError if the command does not exist.
def initialize(*args) @args = args command = @args.shift || :tag method = "run_#{command}" raise CommandError, "invalid command #{command}" unless self.class.method_defined?(method) send method end
def run_format
Output the semver as specified by a format string.
def run_format version = SemVer.find format_str = @args.shift or raise CommandError, "required: format string" puts version.format(format_str) end
def run_help
def run_help puts self.class.help_text end
def run_increment
def run_increment version = SemVer.find dimension = @args.shift or raise CommandError, "required: major | minor | patch" case dimension when 'major' version.major += 1 version.minor = 0 version.patch = 0 when 'minor' version.minor += 1 version.patch = 0 when 'patch' version.patch += 1 else raise CommandError, "#{dimension} is invalid: major | minor | patch" end version.special = '' version.metadata = '' version.save end
def run_initialize
def run_initialize file = SemVer.file_name if File.exist? file puts "#{file} already exists" else version = SemVer.new version.save file end end
def run_metadata
def run_metadata version = SemVer.find special_str = @args.shift or raise CommandError, "required: an arbitrary string (beta, alfa, romeo, etc)" version.metadata = special_str version.save end
def run_special
def run_special version = SemVer.find special_str = @args.shift or raise CommandError, "required: an arbitrary string (beta, alfa, romeo, etc)" version.special = special_str version.save end
def run_tag
Output the semver with the default formatting.
def run_tag version = SemVer.find puts version.to_s end