Permalink
Browse files

Use ::Dir so we get ruby core's Dir, not FPM::Package::Dir

  • Loading branch information...
1 parent 2ea0517 commit 4d737eef7a39d7f12466a2c4c013de083527f475 @jordansissel committed Feb 10, 2014
Showing with 63 additions and 0 deletions.
  1. +63 −0 lib/fpm/package/zip.rb
View
@@ -0,0 +1,63 @@
+require "backports" # gem backports
+require "fpm/package"
+require "fpm/util"
+require "fileutils"
+require "fpm/package/dir"
+
+# Use a zip as a package.
+#
+# This provides no metadata. Both input and output are supported.
+class FPM::Package::Zip < FPM::Package
+
+ # Input a zipfile.
+ def input(input_path)
+ # use part of the filename as the package name
+ self.name = File.extname(input_path)[1..-1]
+
+ realpath = Pathname.new(input_path).realpath.to_s
+ ::Dir.chdir(build_path) do
+ safesystem("unzip", realpath)
+ end
+
+ # use dir to set stuff up properly, mainly so I don't have to reimplement
+ # the chdir/prefix stuff special for zip.
+ 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 # def input
+
+ # Output a tarball.
+ #
+ # If the output path ends predictably (like in .tar.gz) it will try to obey
+ # the compression type.
+ def output(output_path)
+ output_check(output_path)
+
+ files = Find.find(staging_path).to_a
+ safesystem("zip", output_path, *files)
+ end # def output
+
+ # Generate the proper tar flags based on the path name.
+ 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 # def tar_compression_flag
+end # class FPM::Package::Tar

0 comments on commit 4d737ee

Please sign in to comment.