Sha256: 3c3710d8ecee9a8ab8f3f6968f5d913f0058493d560bee5470bae67211396b4b

Contents?: true

Size: 1.16 KB

Versions: 16

Compression:

Stored size: 1.16 KB

Contents

class Puppet::ModuleTool::Tar::Mini
  def initialize(module_name)
    @module_name = module_name
  end

  def unpack(sourcefile, destdir, _)
    Zlib::GzipReader.open(sourcefile) do |reader|
      Archive::Tar::Minitar.unpack(reader, destdir) do |action, name, stats|
        case action
        when :file_done
          File.chmod(0444, "#{destdir}/#{name}")
        when :dir, :file_start
          validate_entry(destdir, name)
          Puppet.debug("extracting #{destdir}/#{name}")
        end
      end
    end
  end

  def pack(sourcedir, destfile)
    Zlib::GzipWriter.open(destfile) do |writer|
      Archive::Tar::Minitar.pack(sourcedir, writer)
    end
  end

  private

  def validate_entry(destdir, path)
    if Pathname.new(path).absolute?
      raise Puppet::ModuleTool::Errors::InvalidPathInPackageError,
        :requested_package => @module_name, :entry_path => path, :directory => destdir
    end

    path = File.expand_path File.join(destdir, path)

    if path !~ /\A#{Regexp.escape destdir}/
      raise Puppet::ModuleTool::Errors::InvalidPathInPackageError,
        :requested_package => @module_name, :entry_path => path, :directory => destdir
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
puppet-3.5.1 lib/puppet/module_tool/tar/mini.rb
puppet-3.5.1-x86-mingw32 lib/puppet/module_tool/tar/mini.rb
puppet-3.5.1.rc1 lib/puppet/module_tool/tar/mini.rb
puppet-3.5.1.rc1-x86-mingw32 lib/puppet/module_tool/tar/mini.rb
puppet-3.5.0.rc3 lib/puppet/module_tool/tar/mini.rb
puppet-3.5.0.rc3-x86-mingw32 lib/puppet/module_tool/tar/mini.rb
puppet-3.5.0.rc2 lib/puppet/module_tool/tar/mini.rb
puppet-3.5.0.rc2-x86-mingw32 lib/puppet/module_tool/tar/mini.rb
puppet-3.5.0.rc1 lib/puppet/module_tool/tar/mini.rb
puppet-3.5.0.rc1-x86-mingw32 lib/puppet/module_tool/tar/mini.rb
puppet-3.4.3 lib/puppet/module_tool/tar/mini.rb
puppet-3.4.2 lib/puppet/module_tool/tar/mini.rb
puppet-3.4.1 lib/puppet/module_tool/tar/mini.rb
puppet-3.4.0 lib/puppet/module_tool/tar/mini.rb
puppet-3.4.0.rc2 lib/puppet/module_tool/tar/mini.rb
puppet-3.4.0.rc1 lib/puppet/module_tool/tar/mini.rb