59 lines
1.4 KiB
Ruby
Raw Normal View History

2016-09-24 13:52:43 +02:00
module Hbc
class Container
class Base
extend Predicable
attr_reader :path
attr_predicate :verbose?
2017-06-11 04:41:43 +02:00
def initialize(cask, path, command, nested: false, verbose: false)
2016-09-24 13:52:43 +02:00
@cask = cask
@path = path
@command = command
2017-06-11 04:41:43 +02:00
@verbose = verbose
end
def extract(to: nil, basename: nil)
basename ||= path.basename
unpack_dir = Pathname(to || Dir.pwd).expand_path
unpack_dir.mkpath
extract_to_dir(unpack_dir, basename: basename)
2016-09-24 13:52:43 +02:00
end
2016-08-18 22:11:42 +03:00
def extract_nested_inside(dir, to:)
2016-09-24 13:52:43 +02:00
children = Pathname.new(dir).children
2016-08-18 22:11:42 +03:00
2016-09-24 13:52:43 +02:00
nested_container = children[0]
2016-08-18 22:11:42 +03:00
2016-09-24 13:52:43 +02:00
unless children.count == 1 &&
!nested_container.directory? &&
2017-10-04 17:08:35 +02:00
@cask.artifacts.none? { |a| a.is_a?(Artifact::NestedContainer) } &&
extract_nested_container(nested_container, to: to)
2016-08-18 22:11:42 +03:00
2016-09-24 13:52:43 +02:00
children.each do |src|
dest = @cask.staged_path.join(src.basename)
FileUtils.rm_r(dest) if dest.exist?
FileUtils.mv(src, dest)
end
end
2016-08-18 22:11:42 +03:00
end
def extract_nested_container(source, to:)
container = Container.for_path(source)
2016-08-18 22:11:42 +03:00
2016-09-24 13:52:43 +02:00
return false unless container
2016-08-18 22:11:42 +03:00
2016-09-24 13:52:43 +02:00
ohai "Extracting nested container #{source.basename}"
container.new(@cask, source, @command, verbose: verbose?).extract(to: to)
2016-08-18 22:11:42 +03:00
2016-09-24 13:52:43 +02:00
true
end
def dependencies
[]
end
2016-09-24 13:52:43 +02:00
end
2016-08-18 22:11:42 +03:00
end
end