| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | require "hbc/container/base" | 
					
						
							|  |  |  | require "hbc/container/air" | 
					
						
							|  |  |  | require "hbc/container/bzip2" | 
					
						
							|  |  |  | require "hbc/container/cab" | 
					
						
							|  |  |  | require "hbc/container/criteria" | 
					
						
							|  |  |  | require "hbc/container/dmg" | 
					
						
							| 
									
										
										
										
											2017-08-08 18:10:01 +02:00
										 |  |  | require "hbc/container/directory" | 
					
						
							| 
									
										
										
										
											2017-03-28 15:34:34 +02:00
										 |  |  | require "hbc/container/executable" | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | require "hbc/container/generic_unar" | 
					
						
							| 
									
										
										
										
											2017-05-10 23:18:42 +08:00
										 |  |  | require "hbc/container/gpg" | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | require "hbc/container/gzip" | 
					
						
							|  |  |  | require "hbc/container/lzma" | 
					
						
							|  |  |  | require "hbc/container/naked" | 
					
						
							|  |  |  | require "hbc/container/otf" | 
					
						
							|  |  |  | require "hbc/container/pkg" | 
					
						
							|  |  |  | require "hbc/container/seven_zip" | 
					
						
							|  |  |  | require "hbc/container/sit" | 
					
						
							| 
									
										
										
										
											2017-08-08 18:10:01 +02:00
										 |  |  | require "hbc/container/svn_repository" | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | require "hbc/container/tar" | 
					
						
							|  |  |  | require "hbc/container/ttf" | 
					
						
							|  |  |  | require "hbc/container/rar" | 
					
						
							|  |  |  | require "hbc/container/xar" | 
					
						
							|  |  |  | require "hbc/container/xz" | 
					
						
							|  |  |  | require "hbc/container/zip" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module Hbc | 
					
						
							|  |  |  |   class Container | 
					
						
							|  |  |  |     def self.autodetect_containers | 
					
						
							|  |  |  |       [ | 
					
						
							|  |  |  |         Pkg, | 
					
						
							|  |  |  |         Ttf, | 
					
						
							|  |  |  |         Otf, | 
					
						
							|  |  |  |         Air, | 
					
						
							|  |  |  |         Cab, | 
					
						
							|  |  |  |         Dmg, | 
					
						
							|  |  |  |         SevenZip, | 
					
						
							|  |  |  |         Sit, | 
					
						
							|  |  |  |         Rar, | 
					
						
							|  |  |  |         Zip, | 
					
						
							|  |  |  |         Xar,   # need to be before tar as tar can also list xar | 
					
						
							|  |  |  |         Tar,   # or compressed tar (bzip2/gzip/lzma/xz) | 
					
						
							|  |  |  |         Bzip2, # pure bzip2 | 
					
						
							|  |  |  |         Gzip,  # pure gzip | 
					
						
							|  |  |  |         Lzma,  # pure lzma | 
					
						
							|  |  |  |         Xz,    # pure xz | 
					
						
							| 
									
										
										
										
											2017-05-10 23:18:42 +08:00
										 |  |  |         Gpg,   # GnuPG signed data | 
					
						
							| 
									
										
										
										
											2017-03-28 15:34:34 +02:00
										 |  |  |         Executable, | 
					
						
							| 
									
										
										
										
											2017-08-08 18:10:01 +02:00
										 |  |  |         SvnRepository, | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       ] | 
					
						
							|  |  |  |       # for explicit use only (never autodetected): | 
					
						
							|  |  |  |       # Hbc::Container::Naked | 
					
						
							|  |  |  |       # Hbc::Container::GenericUnar | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |     def self.for_path(path, command) | 
					
						
							|  |  |  |       odebug "Determining which containers to use based on filetype" | 
					
						
							|  |  |  |       criteria = Criteria.new(path, command) | 
					
						
							|  |  |  |       autodetect_containers.find do |c| | 
					
						
							|  |  |  |         odebug "Checking container class #{c}" | 
					
						
							|  |  |  |         c.me?(criteria) | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |     def self.from_type(type) | 
					
						
							|  |  |  |       odebug "Determining which containers to use based on 'container :type'" | 
					
						
							|  |  |  |       begin | 
					
						
							| 
									
										
										
										
											2016-10-14 20:55:09 +02:00
										 |  |  |         const_get(type.to_s.split("_").map(&:capitalize).join) | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       rescue NameError | 
					
						
							| 
									
										
										
										
											2017-04-21 13:43:13 +02:00
										 |  |  |         nil | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |