Sha256: 807aa64f3b7423a0cb55973ead7feaf3fd4e36a8312f7071685702fa0580badf

Contents?: true

Size: 1.47 KB

Versions: 4

Compression:

Stored size: 1.47 KB

Contents

require 'yaml'

class Bueller
  class VersionHelper
    class VersionMissing < StandardError; end
    class MalformattedVersion < StandardError; end

    attr_accessor :gemspec_helper
    attr_reader :major, :minor, :patch, :build

    def initialize(gemspec_helper)
      self.gemspec_helper = gemspec_helper
      parse_version
    end

    def path
      File.join(gemspec_helper.base_dir, 'lib', gemspec_helper.project_name, 'version.rb')
    end

    def version_source
      @version_source ||= File.read path
    end

    def parse_version
      if version_source =~ /VERSION[^\d]+(\d+)\.(\d+)\.(\d+)(\.([^'"]*))?/
        @major = $1.to_i
        @minor = $2.to_i
        @patch = $3.to_i
        @build = $5
      else
        raise VersionMissing, "lib/#{gemspec_helper.project_name}/version.rb doesn't contain a version string"
      end
    end

    def write_version
      version_source.sub! /VERSION\s*=.*/, %Q{VERSION = "#{to_s}"}
      File.open(path, 'w') { |f| f.puts version_source }
      parse_version
    end

    def bump_major
      @major += 1
      @minor = 0
      @patch = 0
      @build = nil
    end

    def bump_minor
      @minor += 1
      @patch = 0
      @build = nil
    end

    def bump_patch
      @patch += 1
      @build = nil
    end

    def update_to(major, minor, patch, build=nil)
      @major = major
      @minor = minor
      @patch = patch
      @build = build
    end

    def to_s
      [major, minor, patch, build].compact.join('.')
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bueller-0.0.9 lib/bueller/version_helper.rb
bueller-0.0.8 lib/bueller/version_helper.rb
bueller-0.0.7 lib/bueller/version_helper.rb
bueller-0.0.6 lib/bueller/version_helper.rb