Sha256: ad101387ac9f85d33fde94f980b623d3ad485b8665cee0276a8bae7451f01c32

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

require 'active_support/core_ext/object'

module EacLauncher
  module Ruby
    module Gem
      class Specification
        class << self
          def parse_version_file(file)
            s = ::File.read(file)
            m = /VERSION\s*=\s*[\'\"]([^\'\"]+)[\'\"]/.match(s)
            m ? m[1] : nil
          end
        end

        attr_reader :gemspec_file

        def initialize(gemspec_file)
          @gemspec_file = gemspec_file
        end

        def version
          v = self.class.parse_version_file(version_file)
          return v if v.present?
          raise "Version not found on file \"#{version_file}\""
        end

        def name
          ::File.basename(gemspec_file).gsub(/\.gemspec\z/, '')
        end

        def full_name
          "#{name}-#{version}"
        end

        def to_s
          full_name
        end

        private

        def gem_root
          ::File.dirname(gemspec_file)
        end

        def version_file
          f = ::File.join(gem_root, 'lib', *namespace_parts, 'version.rb')
          return f if ::File.exist?(f)
          raise "Version file \"#{f}\" does not exist"
        end

        def namespace_parts
          name.split('-')
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
eac_launcher-0.6.0 lib/eac_launcher/ruby/gem/specification.rb