class FPM::Package::Tar
Use a tarball as a package.
This provides no metadata. Both input and output are supported.
Public Instance Methods
input(input_path)
click to toggle source
Input a tarball. Compressed tarballs should be OK.
# File lib/fpm/package/tar.rb, line 13 def input(input_path) # use part of the filename as the package name self.name = File.basename(input_path).split(".").first # Unpack the tarball to the build path before ultimately moving it to # staging. args = ["-xf", input_path, "-C", build_path] # Add the tar compression flag if necessary tar_compression_flag(input_path).tap do |flag| args << flag unless flag.nil? end safesystem("tar", *args) # use dir to set stuff up properly, mainly so I don't have to reimplement # the chdir/prefix stuff special for tar. dir = convert(FPM::Package::Dir) if attributes[:chdir] dir.attributes[:chdir] = File.join(build_path, attributes[:chdir]) else dir.attributes[:chdir] = build_path end cleanup_staging # Tell 'dir' to input "." and chdir/prefix will help it figure out the # rest. dir.input(".") @staging_path = dir.staging_path dir.cleanup_build end
output(output_path)
click to toggle source
Output a tarball.
If the output path ends predictably (like in .tar.gz) it will try to obey the compression type.
# File lib/fpm/package/tar.rb, line 49 def output(output_path) output_check(output_path) # Write the scripts, too. write_scripts # Unpack the tarball to the staging path args = ["-cf", output_path, "-C", staging_path] tar_compression_flag(output_path).tap do |flag| args << flag unless flag.nil? end args << "." safesystem("tar", *args) end
tar_compression_flag(path)
click to toggle source
Generate the proper tar flags based on the path name.
# File lib/fpm/package/tar.rb, line 66 def tar_compression_flag(path) case path when /\.tar\.bz2$/ return "-j" when /\.tar\.gz$|\.tgz$/ return "-z" when /\.tar\.xz$/ return "-J" else return nil end end