| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | require "fileutils" | 
					
						
							|  |  |  | require "hbc/verify" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module Hbc | 
					
						
							|  |  |  |   class Download | 
					
						
							|  |  |  |     attr_reader :cask | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def initialize(cask, force: false) | 
					
						
							|  |  |  |       @cask = cask | 
					
						
							|  |  |  |       @force = force | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def perform | 
					
						
							|  |  |  |       clear_cache | 
					
						
							|  |  |  |       fetch | 
					
						
							|  |  |  |       downloaded_path | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     attr_reader :force | 
					
						
							|  |  |  |     attr_accessor :downloaded_path | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def downloader | 
					
						
							|  |  |  |       @downloader ||= case cask.url.using | 
					
						
							| 
									
										
										
										
											2016-10-14 20:11:33 +02:00
										 |  |  |       when :svn | 
					
						
							|  |  |  |         SubversionDownloadStrategy.new(cask) | 
					
						
							|  |  |  |       when :post | 
					
						
							|  |  |  |         CurlPostDownloadStrategy.new(cask) | 
					
						
							|  |  |  |       else | 
					
						
							|  |  |  |         CurlDownloadStrategy.new(cask) | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def clear_cache | 
					
						
							|  |  |  |       downloader.clear_cache if force || cask.version.latest? | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def fetch | 
					
						
							|  |  |  |       self.downloaded_path = downloader.fetch | 
					
						
							|  |  |  |     rescue StandardError => e | 
					
						
							|  |  |  |       raise CaskError, "Download failed on Cask '#{cask}' with message: #{e}" | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | end |