Class: Puppetfiler::Mod
- Inherits:
-
Object
- Object
- Puppetfiler::Mod
- Defined in:
- lib/puppetfiler/mod.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#range ⇒ Object
readonly
Returns the value of attribute range.
-
#slug ⇒ Object
readonly
Returns the value of attribute slug.
Instance Method Summary collapse
- #eql?(other) ⇒ Boolean
-
#initialize(*args) ⇒ Mod
constructor
A new instance of Mod.
- #latest ⇒ Object
- #latest_valid ⇒ Object
- #valid_versions ⇒ Object
- #version ⇒ Object
- #version_valid(version = @version) ⇒ Object
Constructor Details
#initialize(*args) ⇒ Mod
Returns a new instance of Mod.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/puppetfiler/mod.rb', line 10 def initialize(*args) require 'hashie' args = Hashie.symbolize_keys(args[0]) raise "Names with dashes are disallowed: #{args[:name]}" if /-/.match(args[:name]) @name = args[:name] @slug = @name.gsub('/', '-') @forge = PuppetForge::Module.find(@slug) @range = nil %i{range version_requirement}.each do |v| if args.has_key?(v) if not args[v].is_a?(SemanticPuppet::VersionRange) args[v] = SemanticPuppet::VersionRange.parse(args[v]) end @range = args[v] end end @version = nil %i{version}.each do |v| @version = SemanticPuppet::Version.parse(args[v]) if args.has_key?(v) end @version = latest_valid if not @version end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/puppetfiler/mod.rb', line 6 def name @name end |
#range ⇒ Object (readonly)
Returns the value of attribute range.
8 9 10 |
# File 'lib/puppetfiler/mod.rb', line 8 def range @range end |
#slug ⇒ Object (readonly)
Returns the value of attribute slug.
7 8 9 |
# File 'lib/puppetfiler/mod.rb', line 7 def slug @slug end |
Instance Method Details
#eql?(other) ⇒ Boolean
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/puppetfiler/mod.rb', line 39 def eql?(other) return false if not @name.eql?(other.name) # range has to be checked first, sine version is a method # returning at least latest if @range return false if not other.range return true if @range.eql?(other.range) end return true if version.eql?(other.version) return false end |
#latest ⇒ Object
60 61 62 |
# File 'lib/puppetfiler/mod.rb', line 60 def latest return SemanticPuppet::Version.parse(@forge.current_release.version) end |
#latest_valid ⇒ Object
77 78 79 80 81 82 83 |
# File 'lib/puppetfiler/mod.rb', line 77 def latest_valid if not @range return latest end return valid_versions[0] end |
#valid_versions ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/puppetfiler/mod.rb', line 64 def valid_versions return [] if not @range versions = [] @forge.releases.each do |release| version = SemanticPuppet::Version.parse(release.version) versions << version if @range.cover?(version) end return versions end |
#version ⇒ Object
54 55 56 57 58 |
# File 'lib/puppetfiler/mod.rb', line 54 def version return latest_valid if not @version return @version end |
#version_valid(version = @version) ⇒ Object
85 86 87 88 89 90 |
# File 'lib/puppetfiler/mod.rb', line 85 def version_valid(version = @version) return false if not @range version = SemanticPuppet::Version.parse(version) if not version.is_a?(SemanticPuppet::Version) return range.cover?(version) end |