Class: Puppet::Forge::ModuleRelease

Inherits:
SemanticPuppet::Dependency::ModuleRelease
  • Object
show all
Defined in:
lib/puppet/forge.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source, data) ⇒ ModuleRelease

Returns a new instance of ModuleRelease.

 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
# File 'lib/puppet/forge.rb', line 127 def initialize(source, data) @data = data @metadata = meta = data['metadata'] name = meta['name'].tr('/', '-') version = SemanticPuppet::Version.parse(meta['version']) release = "#{name}@#{version}" if meta['dependencies'] dependencies = meta['dependencies'].collect do |dep| Puppet::ModuleTool::Metadata.new.add_dependency(dep['name'], dep['version_requirement'], dep['repository']) Puppet::ModuleTool.parse_module_dependency(release, dep)[0..1] rescue ArgumentError => e raise ArgumentError, _("Malformed dependency: %{name}.") % { name: dep['name'] } + ' ' + _("Exception was: %{detail}") % { detail: e } end else dependencies = [] end super(source, name, version, dependencies.to_h) end

Instance Attribute Details

#install_dirObject (readonly)

Returns the value of attribute install_dir.

 125 126 127
# File 'lib/puppet/forge.rb', line 125 def install_dir @install_dir end

#metadataObject (readonly)

Returns the value of attribute metadata.

 125 126 127
# File 'lib/puppet/forge.rb', line 125 def  @metadata end

Instance Method Details

#install(dir) ⇒ Object

 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
# File 'lib/puppet/forge.rb', line 150 def install(dir) staging_dir = prepare module_dir = dir + name[/-(.*)/, 1] module_dir.rmtree if module_dir.exist? # Make sure unpacked module has the same ownership as the folder we are moving it into.  Puppet::ModuleTool::Applications::Unpacker.harmonize_ownership(dir, staging_dir) FileUtils.mv(staging_dir, module_dir) @install_dir = dir # Return the Pathname object representing the directory where the  # module release archive was unpacked the to.  module_dir ensure staging_dir.rmtree if staging_dir.exist? end

#prepareObject

 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
# File 'lib/puppet/forge.rb', line 169 def prepare return @unpacked_into if @unpacked_into Puppet.warning "#{@metadata['name']} has been deprecated by its author! View module on Puppet Forge for more info." if deprecated? download(@data['file_uri'], tmpfile) checksum = @data['file_sha256'] if checksum validate_checksum(tmpfile, checksum, Digest::SHA256) else checksum = @data['file_md5'] if checksum validate_checksum(tmpfile, checksum, Digest::MD5) else raise _("Forge module is missing SHA256 and MD5 checksums") end end unpack(tmpfile, tmpdir) @unpacked_into = Pathname.new(tmpdir) end