diff options
Diffstat (limited to 'Library/Homebrew/formula_support.rb')
| -rw-r--r-- | Library/Homebrew/formula_support.rb | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/Library/Homebrew/formula_support.rb b/Library/Homebrew/formula_support.rb index 69420ff0f..d70a0aa59 100644 --- a/Library/Homebrew/formula_support.rb +++ b/Library/Homebrew/formula_support.rb @@ -1,118 +1,5 @@ -require 'download_strategy' -require 'checksum' -require 'version' - FormulaConflict = Struct.new(:name, :reason) -class SoftwareSpec - attr_reader :checksum, :mirrors, :specs - attr_reader :using # for auditing - - def initialize url=nil, version=nil - @url = url - @version = version - @mirrors = [] - @specs = {} - @checksum = nil - @using = nil - end - - def download_strategy - @download_strategy ||= DownloadStrategyDetector.detect(url, using) - end - - def verify_download_integrity fn - fn.verify_checksum(checksum) - rescue ChecksumMissingError - opoo "Cannot verify package integrity" - puts "The formula did not provide a download checksum" - puts "For your reference the SHA1 is: #{fn.sha1}" - rescue ChecksumMismatchError => e - e.advice = <<-EOS.undent - Archive: #{fn} - (To retry an incomplete download, remove the file above.) - EOS - raise e - end - - def detect_version(val) - case val - when nil then Version.detect(url, specs) - when String then Version.new(val) - when Hash then Version.new_with_scheme(*val.shift) - else - raise TypeError, "version '#{val.inspect}' should be a string" - end - end - - # The methods that follow are used in the block-form DSL spec methods - Checksum::TYPES.each do |cksum| - class_eval <<-EOS, __FILE__, __LINE__ + 1 - def #{cksum}(val) - @checksum = Checksum.new(:#{cksum}, val) - end - EOS - end - - def url val=nil, specs={} - return @url if val.nil? - @url = val - @using = specs.delete(:using) - @specs.merge!(specs) - end - - def version val=nil - @version ||= detect_version(val) - end - - def mirror val - mirrors << val - end -end - -class HeadSoftwareSpec < SoftwareSpec - def initialize url=nil, version=Version.new(:HEAD) - super - end - - def verify_download_integrity fn - return - end -end - -class Bottle < SoftwareSpec - attr_writer :url - attr_rw :root_url, :prefix, :cellar, :revision - - def initialize - super - @revision = 0 - @prefix = '/usr/local' - @cellar = '/usr/local/Cellar' - end - - # Checksum methods in the DSL's bottle block optionally take - # a Hash, which indicates the platform the checksum applies on. - Checksum::TYPES.each do |cksum| - class_eval <<-EOS, __FILE__, __LINE__ + 1 - def #{cksum}(val=nil) - return @#{cksum} if val.nil? - @#{cksum} ||= Hash.new - case val - when Hash - key, value = val.shift - @#{cksum}[value] = Checksum.new(:#{cksum}, key) - end - - if @#{cksum}.has_key? bottle_tag - @checksum = @#{cksum}[bottle_tag] - end - end - EOS - end -end - - # Used to annotate formulae that duplicate OS X provided software # or cause conflicts when linked in. class KegOnlyReason |
