Class: FPM::Package::Tar
- Inherits:
-
FPM::Package
- Object
- FPM::Package
- FPM::Package::Tar
- Defined in:
- lib/fpm/package/tar.rb
Overview
Use a tarball as a package.
This provides no metadata. Both input and output are supported.
Instance Attribute Summary
Attributes inherited from FPM::Package
#architecture, #attributes, #attrs, #category, #config_files, #conflicts, #dependencies, #description, #directories, #epoch, #iteration, #license, #maintainer, #name, #provides, #replaces, #scripts, #url, #vendor, #version
Instance Method Summary collapse
-
#input(input_path) ⇒ Object
Input a tarball.
-
#output(output_path) ⇒ Object
Output a tarball.
-
#tar_compression_flag(path) ⇒ Object
Generate the proper tar flags based on the path name.
Methods inherited from FPM::Package
apply_options, #build_path, #cleanup, #cleanup_build, #cleanup_staging, #convert, #converted_from, default_attributes, #edit_file, #files, inherited, #initialize, option, #script, #staging_path, #to_s, #type, type, types
Methods included from Util
#ar_cmd, #ar_cmd_deterministic?, #copied_entries, #copy_entry, #copy_metadata, #default_shell, #erbnew, #execmd, #expand_pessimistic_constraints, #logger, #program_exists?, #program_in_path?, #safesystem, #safesystemout, #tar_cmd, #tar_cmd_supports_sort_names_and_set_mtime?
Constructor Details
This class inherits a constructor from FPM::Package
Instance Method Details
#input(input_path) ⇒ Object
Input a tarball. Compressed tarballs should be OK.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# 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) ⇒ Object
Output a tarball.
If the output path ends predictably (like in .tar.gz) it will try to obey the compression type.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# 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) ⇒ Object
Generate the proper tar flags based on the path name.
66 67 68 69 70 71 72 73 74 75 76 77 |
# 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 |