Sha256: 5fd40a04df0ba91674d3b811edc0d51defdd7cc28d8b62a034da4b0a0b19a1ec

Contents?: true

Size: 1.58 KB

Versions: 8

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true

require 'avm/source_generators/base'
require 'avm/eac_ruby_base1/rubygems/remote'
require 'eac_ruby_utils/core_ext'

module Avm
  module EacRubyBase1
    module SourceGenerators
      class Base < ::Avm::SourceGenerators::Base
        class VersionBuilder
          enable_simple_cache
          common_constructor :gem_name, :options

          def to_s
            r = "'~> #{two_segments}'"
            r += ", '>= #{three_segments}'" if segments.count >= 3 && segments[2].positive?
            r
          end

          # @return [Gem::Version]
          def version
            options_version || loaded_version || maximum_version
          end

          def two_segments
            segments.first(2).join('.')
          end

          def three_segments
            segments.first(3).join('.')
          end

          private

          # @return [Gem::Version]
          def maximum_version
            r = ::Avm::EacRubyBase1::Rubygems::Remote.new(gem_name).maximum_number
            return ::Gem::Version.new(r) if r.present?

            raise "None version found for gem \"#{gem_name}\""
          end

          def segments_uncached
            version.release.to_s.split('.').map(&:to_i)
          end

          # @return [Gem::Version, nil]
          def loaded_version
            ::Gem.loaded_specs[gem_name].if_present(&:version)
          end

          def options_version
            options["#{gem_name}_version".dasherize.to_sym].if_present do |v|
              ::Gem::Version.new(v)
            end
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
avm-eac_ruby_base1-0.35.1 lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb
eac_tools-0.96.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb
avm-eac_ruby_base1-0.35.0 lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb
eac_tools-0.95.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb
avm-eac_ruby_base1-0.34.1 lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb
eac_tools-0.91.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb
avm-eac_ruby_base1-0.34.0 lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb
eac_tools-0.91.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb