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 |