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
- #forge ⇒ Object
-
#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 = nil @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
43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/puppetfiler/mod.rb', line 43 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 |
#forge ⇒ Object
39 40 41 |
# File 'lib/puppetfiler/mod.rb', line 39 def forge return @forge ||= PuppetForge::Module.find(@slug) end |
#latest ⇒ Object
64 65 66 |
# File 'lib/puppetfiler/mod.rb', line 64 def latest return SemanticPuppet::Version.parse(forge.current_release.version) end |
#latest_valid ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/puppetfiler/mod.rb', line 81 def latest_valid if not @range return latest end return valid_versions[0] end |
#valid_versions ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/puppetfiler/mod.rb', line 68 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
58 59 60 61 62 |
# File 'lib/puppetfiler/mod.rb', line 58 def version return latest_valid if not @version return @version end |
#version_valid(version = @version) ⇒ Object
89 90 91 92 93 94 |
# File 'lib/puppetfiler/mod.rb', line 89 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 |