class Puppetfiler::Mod

Attributes

name[R]
range[R]
slug[R]

Public Class Methods

new(*args) click to toggle source
# 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

Public Instance Methods

eql?(other) click to toggle source
# 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() click to toggle source
# File lib/puppetfiler/mod.rb, line 39
def forge
    return @forge ||= PuppetForge::Module.find(@slug)
end
latest() click to toggle source
# File lib/puppetfiler/mod.rb, line 64
def latest
    return SemanticPuppet::Version.parse(forge.current_release.version)
end
latest_valid() click to toggle source
# File lib/puppetfiler/mod.rb, line 81
def latest_valid
    if not @range
        return latest
    end

    return valid_versions[0]
end
valid_versions() click to toggle source
# 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() click to toggle source
# File lib/puppetfiler/mod.rb, line 58
def version
    return latest_valid if not @version

    return @version
end
version_valid(version = @version) click to toggle source
# 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