Sha256: 57292b075b452e0c8f5da4c7715db3e22dcac8000e9bebdc62a855cae0819a87

Contents?: true

Size: 1.66 KB

Versions: 15

Compression:

Stored size: 1.66 KB

Contents

require 'gem/release/version/number'

module Gem
  module Release
    module Files
      class Version < Struct.new(:name, :version, :opts)
        VERSION      = /(VERSION\s*=\s*(?:"|'))((?:(?!"|').)*)("|')/
        RELEASE      = /^(\d+)\.(\d+)\.(\d+)(.*)$/
        PRE_RELEASE  = /^(\d+)\.(\d+)\.(\d+)\.?(.*)(\d+)$/

        STAGES = [:major, :minor, :patch]

        def exists?
          !!path
        end

        def bump
          File.write(path, bumped)
        end

        def path
          @path ||= opts[:file] || paths.detect { |path| File.exist?(path) }
        end

        def from
          @from ||= content =~ VERSION && $2 || raise("Could not determine current version from file #{path}")
        end

        def to
          @to ||= number.bump
        end

        def to_h
          { from: from, version: to }
        end

        private

          def paths
            %W(
              lib/#{name.gsub('-', '/')}/version.rb
              lib/#{name}/version.rb
            ).uniq
          end

          def not_found
            raise Abort, "version.rb file not found (#{paths.join(', ')})"
          end

          def number
            @number ||= Release::Version::Number.new(from, version ? version.to_sym : nil)
          end

          def bumped
            content.sub(VERSION) { "#{$1}#{to}#{$3}" }
          end

          def content
            @content ||= File.read(path) if exists?
          end

          def to_num(*args)
            args.join('.')
          end

          def path_to(path)
            "lib/#{path}/version.rb"
          end

          def name
            @name ||= super.sub(/_rb$/, '')
          end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
gem-release-2.2.3.alpha2 lib/gem/release/files/version.rb
gem-release-2.2.3.alpha1 lib/gem/release/files/version.rb
gem-release-2.2.2 lib/gem/release/files/version.rb
gem-release-2.2.1 lib/gem/release/files/version.rb
gem-release-2.2.0 lib/gem/release/files/version.rb
gem-release-2.1.1 lib/gem/release/files/version.rb
gem-release-2.1.0 lib/gem/release/files/version.rb
gem-release-2.0.4 lib/gem/release/files/version.rb
gem-release-2.0.3 lib/gem/release/files/version.rb
gem-release-2.0.2 lib/gem/release/files/version.rb
gem-release-2.0.1 lib/gem/release/files/version.rb
gem-release-2.0.0.rc.3 lib/gem/release/files/version.rb
gem-release-2.0.0.rc.2 lib/gem/release/files/version.rb
gem-release-2.0.0.rc.1 lib/gem/release/files/version.rb
gem-release-2.0.0.dev.5 lib/gem/release/files/version.rb