class Berkshelf::Packager

irb> packager.run(source) #=> “some/path/cookbooks.tar.gz”
irb> packager = Berkshelf::Packager.new(“some/path/cookbooks.tar.gz”)
irb> source = “/path/to/cookbooks”
* “/path/to/cookbooks/nginx”
* “/path/to/cookbooks/my_face”
Archiving a path containing the cookbooks:
Example:
A class for archiving and compressing directory containing one or more cookbooks.

def initialize(out_file)

Parameters:
  • out_file (#to_s) --
def initialize(out_file)
  @out_file           = out_file.to_s
  @out_dir, @filename = File.split(@out_file)
end

def run(source)

Returns:
  • (String) -

Raises:
  • (PackageError) -

Parameters:
  • source (#to_s) --
def run(source)
  begin
    dest = Zlib::GzipWriter.open(out_file)
    tar = RelativeTarWriter.new(dest, source)
    Find.find(source) do |entry|
      next if source == entry
      Minitar.pack_file(entry, tar)
    end
  ensure
    tar.close
    dest.close
  end
  out_file
rescue SystemCallError => ex
  raise PackageError, ex
end

def validate!

Returns:
  • (nil) -

Raises:
  • (PackageError) -
def validate!
  raise PackageError, "Path is not a directory: #{out_dir}" unless File.directory?(out_dir)
  raise PackageError, "Directory is not writable: #{out_dir}" unless File.writable?(out_dir)
end

def validate_destination(path)

def validate_destination(path)
  path.to_s
end