50 lines
1.1 KiB
Ruby
50 lines
1.1 KiB
Ruby
module Ark
|
|
class TarCommandBuilder
|
|
def unpack
|
|
"#{tar_binary} #{args} #{resource.release_file}#{strip_args}"
|
|
end
|
|
|
|
def dump
|
|
"tar -mxf \"#{resource.release_file}\" -C \"#{resource.path}\""
|
|
end
|
|
|
|
def cherry_pick
|
|
"#{tar_binary} #{args} #{resource.release_file} -C #{resource.path} #{resource.creates}#{strip_args}"
|
|
end
|
|
|
|
def initialize(resource)
|
|
@resource = resource
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :resource
|
|
|
|
def node
|
|
resource.run_context.node
|
|
end
|
|
|
|
def tar_binary
|
|
resource.run_context.node['ark']['tar']
|
|
end
|
|
|
|
def args
|
|
case resource.extension
|
|
when /^(tar)$/ then "xf"
|
|
when /^(tar.gz|tgz)$/ then "xzf"
|
|
when /^(tar.bz2|tbz)$/ then "xjf"
|
|
when /^(tar.xz|txz)$/ then "xJf"
|
|
else raise unsupported_extension
|
|
end
|
|
end
|
|
|
|
def strip_args
|
|
resource.strip_components > 0 ? " --strip-components=#{resource.strip_components}" : ""
|
|
end
|
|
|
|
def unsupported_extension
|
|
"Don't know how to expand #{resource.url} (extension: #{resource.extension})"
|
|
end
|
|
end
|
|
end
|