| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module Hbc | 
					
						
							|  |  |  |   class Container | 
					
						
							|  |  |  |     class Base | 
					
						
							|  |  |  |       def initialize(cask, path, command, nested: false) | 
					
						
							|  |  |  |         @cask = cask | 
					
						
							|  |  |  |         @path = path | 
					
						
							|  |  |  |         @command = command | 
					
						
							|  |  |  |         @nested = nested | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def extract_nested_inside(dir) | 
					
						
							|  |  |  |         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? && | 
					
						
							|  |  |  |                @cask.artifacts[:nested_container].empty? && | 
					
						
							|  |  |  |                extract_nested_container(nested_container) | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def extract_nested_container(source) | 
					
						
							|  |  |  |         container = Container.for_path(source, @command) | 
					
						
							| 
									
										
										
										
											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, nested: true).extract | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |         true | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | end |