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 = 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

#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)


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

#latestObject



60
61
62
# File 'lib/puppetfiler/mod.rb', line 60

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

#latest_validObject



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_versionsObject



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

#versionObject



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