Sha256: 87b3b017e03462efedce76c960b33b70863ce596cc5d851edf24fb0e8a82d78a

Contents?: true

Size: 989 Bytes

Versions: 87

Compression:

Stored size: 989 Bytes

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'

module EacRubyGemsUtils
  class Gem
    class VersionFile
      common_constructor :path

      VERSION_LINE_PATTERN = /\A(\s*)VERSION\s*=\s*[\'\"]([^\'\"]+)[\'\"](\s*)\z/.freeze

      def value
        path.read.each_line.lazy.map { |line| line_value(line) }.find { |v| v }
      end

      def value=(new_value)
        path.write(new_value_content(new_value))
      end

      private

      # @return Version found in line, nil otherwise.
      def line_value(line)
        VERSION_LINE_PATTERN.if_match(line.rstrip, false) { |m| ::Gem::Version.new(m[2]) }
      end

      def new_value_content(new_value)
        path.read.each_line
            .map { |line| new_value_line(line, new_value) }
            .join
      end

      def new_value_line(line, new_value)
        m = VERSION_LINE_PATTERN.match(line)
        return line unless m

        "#{m[1]}VERSION = '#{new_value}'#{m[3]}"
      end
    end
  end
end

Version data entries

87 entries across 87 versions & 3 rubygems

Version Path
avm-tools-0.116.1 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.116.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.115.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.114.2 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.114.1 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.114.0 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.113.6 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.113.5 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.113.4 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.113.3 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
eac_ruby_gems_utils-0.9.9 lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.113.2 sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
ehbrs-tools-0.28.3 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
eac_ruby_gems_utils-0.9.8 lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.110.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
eac_ruby_gems_utils-0.9.7 lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.109.1 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.109.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
ehbrs-tools-0.28.2 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb
avm-tools-0.108.0 vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb