chef/cookbooks/ark/libraries/tar_command_builder.rb
2016-02-19 18:09:49 +01:00

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