Class: Gemirro::Gem

Inherits:
Object
  • Object
show all
Defined in:
lib/gemirro/gem.rb

Overview

The Gem class contains data about a Gem such as the name, requirement as well as providing some methods to more easily extract the specific version number.

Constant Summary collapse

ONLY_LATEST =
%i[latest newest].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, requirement = nil, platform = 'ruby') ⇒ Gem

Returns a new instance of Gem.

Parameters:

  • name (String)
  • requirement (Gem::Requirement|String) (defaults to: nil)


33
34
35
36
37
38
39
40
41
42
43
# File 'lib/gemirro/gem.rb', line 33

def initialize(name, requirement = nil, platform = 'ruby')
  requirement ||= ::Gem::Requirement.default

  if requirement.is_a?(String)
    requirement = ::Gem::Requirement.new(requirement)
  end

  @name = name
  @requirement = requirement
  @platform = platform
end

Instance Attribute Details

#gemspecObject

Returns the value of attribute gemspec.



16
17
18
# File 'lib/gemirro/gem.rb', line 16

def gemspec
  @gemspec
end

#nameString (readonly)

Returns:

  • (String)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/gemirro/gem.rb', line 14

class Gem
  attr_reader :name, :requirement
  attr_accessor :gemspec, :platform
  ONLY_LATEST = %i[latest newest].freeze

  ##
  # Returns a `Gem::Version` instance based on the specified requirement.
  #
  # @param [Gem::Requirement] requirement
  # @return [Gem::Version]
  #
  def self.version_for(requirement)
    ::Gem::Version.new(requirement.requirements.max.last.version)
  end

  ##
  # @param [String] name
  # @param [Gem::Requirement|String] requirement
  #
  def initialize(name, requirement = nil, platform = 'ruby')
    requirement ||= ::Gem::Requirement.default

    if requirement.is_a?(String)
      requirement = ::Gem::Requirement.new(requirement)
    end

    @name = name
    @requirement = requirement
    @platform = platform
  end

  ##
  # Returns the version
  #
  # @return [Gem::Version]
  #
  def version
    @version ||= self.class.version_for(requirement)
  end

  ##
  # Define if version exists
  #
  # @return [TrueClass|FalseClass]
  #
  def version?
    version && !version.segments.reject(&:zero?).empty?
  end

  ##
  # Define if version exists
  #
  # @return [TrueClass|FalseClass]
  #
  def only_latest?
    @requirement.is_a?(Symbol) && ONLY_LATEST.include?(@requirement)
  end

  ##
  # Is gemspec
  #
  # @return [TrueClass|FalseClass]
  #
  def gemspec?
    @gemspec == true
  end

  ##
  # Returns the filename of the gem file.
  #
  # @param [String] gem_version
  # @return [String]
  #
  def filename(gem_version = nil)
    gem_version ||= version.to_s
    n = [name, gem_version]
    n.push(@platform) if @platform != 'ruby'
    "#{n.join('-')}.gem"
  end

  ##
  # Returns the filename of the gemspec file.
  #
  # @param [String] gem_version
  # @return [String]
  #
  def gemspec_filename(gem_version = nil)
    gem_version ||= version.to_s
    n = [name, gem_version]
    n.push(@platform) if @platform != 'ruby'
    "#{n.join('-')}.gemspec.rz"
  end
end

#platformObject

Returns the value of attribute platform.



16
17
18
# File 'lib/gemirro/gem.rb', line 16

def platform
  @platform
end

#requirementGem::Requirement (readonly)

Returns:

  • (Gem::Requirement)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/gemirro/gem.rb', line 14

class Gem
  attr_reader :name, :requirement
  attr_accessor :gemspec, :platform
  ONLY_LATEST = %i[latest newest].freeze

  ##
  # Returns a `Gem::Version` instance based on the specified requirement.
  #
  # @param [Gem::Requirement] requirement
  # @return [Gem::Version]
  #
  def self.version_for(requirement)
    ::Gem::Version.new(requirement.requirements.max.last.version)
  end

  ##
  # @param [String] name
  # @param [Gem::Requirement|String] requirement
  #
  def initialize(name, requirement = nil, platform = 'ruby')
    requirement ||= ::Gem::Requirement.default

    if requirement.is_a?(String)
      requirement = ::Gem::Requirement.new(requirement)
    end

    @name = name
    @requirement = requirement
    @platform = platform
  end

  ##
  # Returns the version
  #
  # @return [Gem::Version]
  #
  def version
    @version ||= self.class.version_for(requirement)
  end

  ##
  # Define if version exists
  #
  # @return [TrueClass|FalseClass]
  #
  def version?
    version && !version.segments.reject(&:zero?).empty?
  end

  ##
  # Define if version exists
  #
  # @return [TrueClass|FalseClass]
  #
  def only_latest?
    @requirement.is_a?(Symbol) && ONLY_LATEST.include?(@requirement)
  end

  ##
  # Is gemspec
  #
  # @return [TrueClass|FalseClass]
  #
  def gemspec?
    @gemspec == true
  end

  ##
  # Returns the filename of the gem file.
  #
  # @param [String] gem_version
  # @return [String]
  #
  def filename(gem_version = nil)
    gem_version ||= version.to_s
    n = [name, gem_version]
    n.push(@platform) if @platform != 'ruby'
    "#{n.join('-')}.gem"
  end

  ##
  # Returns the filename of the gemspec file.
  #
  # @param [String] gem_version
  # @return [String]
  #
  def gemspec_filename(gem_version = nil)
    gem_version ||= version.to_s
    n = [name, gem_version]
    n.push(@platform) if @platform != 'ruby'
    "#{n.join('-')}.gemspec.rz"
  end
end

#versionGem::Version (readonly)

Returns the version

Returns:

  • (Gem::Version)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/gemirro/gem.rb', line 14

class Gem
  attr_reader :name, :requirement
  attr_accessor :gemspec, :platform
  ONLY_LATEST = %i[latest newest].freeze

  ##
  # Returns a `Gem::Version` instance based on the specified requirement.
  #
  # @param [Gem::Requirement] requirement
  # @return [Gem::Version]
  #
  def self.version_for(requirement)
    ::Gem::Version.new(requirement.requirements.max.last.version)
  end

  ##
  # @param [String] name
  # @param [Gem::Requirement|String] requirement
  #
  def initialize(name, requirement = nil, platform = 'ruby')
    requirement ||= ::Gem::Requirement.default

    if requirement.is_a?(String)
      requirement = ::Gem::Requirement.new(requirement)
    end

    @name = name
    @requirement = requirement
    @platform = platform
  end

  ##
  # Returns the version
  #
  # @return [Gem::Version]
  #
  def version
    @version ||= self.class.version_for(requirement)
  end

  ##
  # Define if version exists
  #
  # @return [TrueClass|FalseClass]
  #
  def version?
    version && !version.segments.reject(&:zero?).empty?
  end

  ##
  # Define if version exists
  #
  # @return [TrueClass|FalseClass]
  #
  def only_latest?
    @requirement.is_a?(Symbol) && ONLY_LATEST.include?(@requirement)
  end

  ##
  # Is gemspec
  #
  # @return [TrueClass|FalseClass]
  #
  def gemspec?
    @gemspec == true
  end

  ##
  # Returns the filename of the gem file.
  #
  # @param [String] gem_version
  # @return [String]
  #
  def filename(gem_version = nil)
    gem_version ||= version.to_s
    n = [name, gem_version]
    n.push(@platform) if @platform != 'ruby'
    "#{n.join('-')}.gem"
  end

  ##
  # Returns the filename of the gemspec file.
  #
  # @param [String] gem_version
  # @return [String]
  #
  def gemspec_filename(gem_version = nil)
    gem_version ||= version.to_s
    n = [name, gem_version]
    n.push(@platform) if @platform != 'ruby'
    "#{n.join('-')}.gemspec.rz"
  end
end

Class Method Details

.version_for(requirement) ⇒ Gem::Version

Returns a ‘Gem::Version` instance based on the specified requirement.

Parameters:

  • requirement (Gem::Requirement)

Returns:

  • (Gem::Version)


25
26
27
# File 'lib/gemirro/gem.rb', line 25

def self.version_for(requirement)
  ::Gem::Version.new(requirement.requirements.max.last.version)
end

Instance Method Details

#filename(gem_version = nil) ⇒ String

Returns the filename of the gem file.

Parameters:

  • gem_version (String) (defaults to: nil)

Returns:

  • (String)


87
88
89
90
91
92
# File 'lib/gemirro/gem.rb', line 87

def filename(gem_version = nil)
  gem_version ||= version.to_s
  n = [name, gem_version]
  n.push(@platform) if @platform != 'ruby'
  "#{n.join('-')}.gem"
end

#gemspec?TrueClass|FalseClass

Is gemspec

Returns:

  • (TrueClass|FalseClass)


77
78
79
# File 'lib/gemirro/gem.rb', line 77

def gemspec?
  @gemspec == true
end

#gemspec_filename(gem_version = nil) ⇒ String

Returns the filename of the gemspec file.

Parameters:

  • gem_version (String) (defaults to: nil)

Returns:

  • (String)


100
101
102
103
104
105
# File 'lib/gemirro/gem.rb', line 100

def gemspec_filename(gem_version = nil)
  gem_version ||= version.to_s
  n = [name, gem_version]
  n.push(@platform) if @platform != 'ruby'
  "#{n.join('-')}.gemspec.rz"
end

#only_latest?TrueClass|FalseClass

Define if version exists

Returns:

  • (TrueClass|FalseClass)


68
69
70
# File 'lib/gemirro/gem.rb', line 68

def only_latest?
  @requirement.is_a?(Symbol) && ONLY_LATEST.include?(@requirement)
end

#version?TrueClass|FalseClass

Define if version exists

Returns:

  • (TrueClass|FalseClass)


59
60
61
# File 'lib/gemirro/gem.rb', line 59

def version?
  version && !version.segments.reject(&:zero?).empty?
end