Knife-Zero doesn't include Berkshelf support, so vendoring everything in the repo is convenient again
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.5 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
 | |
|       @tar_binary ||= node['ark']['tar'] || case node['platform_family']
 | |
|                                             when 'mac_os_x', 'freebsd'
 | |
|                                               '/usr/bin/tar'
 | |
|                                             when 'smartos'
 | |
|                                               '/bin/gtar'
 | |
|                                             else
 | |
|                                               '/bin/tar'
 | |
|                                             end
 | |
|     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
 |