Class: Puppetfiler::Mod

Inherits:
Object
  • Object
show all
Defined in:
lib/puppetfiler/mod.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/puppetfiler/mod.rb', line 6

def name
  @name
end

#rangeObject (readonly)

Returns the value of attribute range.



8
9
10
# File 'lib/puppetfiler/mod.rb', line 8

def range
  @range
end

#slugObject (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

Returns:

  • (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

#forgeObject



39
40
41
# File 'lib/puppetfiler/mod.rb', line 39

def forge
    return @forge ||= PuppetForge::Module.find(@slug)
end

#latestObject



64
65
66
# File 'lib/puppetfiler/mod.rb', line 64

def latest
    return SemanticPuppet::Version.parse(forge.current_release.version)
end

#latest_validObject



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_versionsObject



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

#versionObject



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