Sha256: 51f57b13dc17bdb1096ba5a213941de6e48e63e090604d7307eb182c9c860da7
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
require 'r10k' require 'r10k/module' require 'r10k/errors' require 'r10k/logging' require 'systemu' require 'semver' require 'json' class R10K::Module::Forge < R10K::Module def self.implements(name, args) args.is_a? String and SemVer.valid?(args) end include R10K::Logging def initialize(name, path, args) super @full_name = name @owner, @name = name.split('/') @version = SemVer.new(@args) end def sync!(options = {}) return if insync? if insync? logger.debug1 "Module #{@full_name} already matches version #{@version}" elsif File.exist? metadata_path logger.debug "Module #{@full_name} is installed but doesn't match version #{@version}, upgrading" cmd = [] cmd << 'upgrade' cmd << "--version=#{@version}" cmd << "--ignore-dependencies" cmd << @full_name pmt cmd else logger.debug "Module #{@full_name} is not installed" cmd = [] cmd << 'install' cmd << "--version=#{@version}" cmd << "--ignore-dependencies" cmd << @full_name pmt cmd end end private def current_version SemVer.new(metadata['version']) end def insync? @version == current_version rescue false end def metadata JSON.parse(File.read(metadata_path)) end def metadata_path File.join(full_path, 'metadata.json') end def pmt(args) cmd = "puppet module --modulepath '#{@path}' #{args.join(' ')}" logger.debug1 "Execute: #{cmd}" status, stdout, stderr = systemu(cmd) unless status == 0 e = R10K::ExecutionFailure.new("#{cmd.inspect} returned with non-zero exit value #{status.inspect}") e.exit_code = status e.stdout = stdout e.stderr = stderr raise e end stdout end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
r10k-0.0.1 | lib/r10k/module/forge.rb |