44 lines
		
	
	
		
			958 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			958 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # typed: true
 | |
| # frozen_string_literal: true
 | |
| 
 | |
| require "downloadable"
 | |
| 
 | |
| module Homebrew
 | |
|   module API
 | |
|     class DownloadStrategy < CurlDownloadStrategy
 | |
|       sig { override.returns(Pathname) }
 | |
|       def symlink_location
 | |
|         cache/name
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     class Download < Downloadable
 | |
|       sig {
 | |
|         params(
 | |
|           url:      String,
 | |
|           checksum: T.nilable(Checksum),
 | |
|           mirrors:  T::Array[String],
 | |
|           cache:    T.nilable(Pathname),
 | |
|         ).void
 | |
|       }
 | |
|       def initialize(url, checksum, mirrors: [], cache: nil)
 | |
|         super()
 | |
|         @url = URL.new(url, using: API::DownloadStrategy)
 | |
|         @checksum = checksum
 | |
|         @mirrors = mirrors
 | |
|         @cache = cache
 | |
|       end
 | |
| 
 | |
|       sig { override.returns(Pathname) }
 | |
|       def cache
 | |
|         @cache || super
 | |
|       end
 | |
| 
 | |
|       sig { returns(Pathname) }
 | |
|       def symlink_location
 | |
|         T.cast(downloader, API::DownloadStrategy).symlink_location
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | 
