38 lines
923 B
Ruby
38 lines
923 B
Ruby
![]() |
class Hbc::Container::Base
|
||
|
def initialize(cask, path, command, nested: false)
|
||
|
@cask = cask
|
||
|
@path = path
|
||
|
@command = command
|
||
|
@nested = nested
|
||
|
end
|
||
|
|
||
|
def extract_nested_inside(dir)
|
||
|
children = Pathname.new(dir).children
|
||
|
|
||
|
nested_container = children[0]
|
||
|
|
||
|
unless children.count == 1 &&
|
||
|
!nested_container.directory? &&
|
||
|
@cask.artifacts[:nested_container].empty? &&
|
||
|
extract_nested_container(nested_container)
|
||
|
|
||
|
children.each do |src|
|
||
|
dest = @cask.staged_path.join(src.basename)
|
||
|
FileUtils.rm_r(dest) if dest.exist?
|
||
|
FileUtils.mv(src, dest)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def extract_nested_container(source)
|
||
|
container = Hbc::Container.for_path(source, @command)
|
||
|
|
||
|
return false unless container
|
||
|
|
||
|
ohai "Extracting nested container #{source.basename}"
|
||
|
container.new(@cask, source, @command, nested: true).extract
|
||
|
|
||
|
true
|
||
|
end
|
||
|
end
|