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)
-
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)
-
(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!
-
(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