aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2013-09-14 10:16:52 -0500
committerJack Nagel2013-09-14 10:16:52 -0500
commit11c4e241248a3ff9e4ed3dd534a06a406da8dccc (patch)
tree3abf7aa70aa35eae40c124a0163f296a76a47b6b
parent798d322a4297073c1c75ec0490aec8b2af1f2c57 (diff)
downloadhomebrew-11c4e241248a3ff9e4ed3dd534a06a406da8dccc.tar.bz2
Move SoftwareSpec to a separate file
-rw-r--r--Library/Homebrew/formula.rb1
-rw-r--r--Library/Homebrew/formula_support.rb113
-rw-r--r--Library/Homebrew/software_spec.rb111
-rw-r--r--Library/Homebrew/test/test_software_spec.rb2
4 files changed, 113 insertions, 114 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index ecae17544..313e5f850 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -11,6 +11,7 @@ require 'compilers'
require 'build_environment'
require 'build_options'
require 'formulary'
+require 'software_spec'
class Formula
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
diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb
new file mode 100644
index 000000000..28c4cd431
--- /dev/null
+++ b/Library/Homebrew/software_spec.rb
@@ -0,0 +1,111 @@
+require 'download_strategy'
+require 'checksum'
+require 'version'
+
+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
diff --git a/Library/Homebrew/test/test_software_spec.rb b/Library/Homebrew/test/test_software_spec.rb
index 856bea611..9cc491a07 100644
--- a/Library/Homebrew/test/test_software_spec.rb
+++ b/Library/Homebrew/test/test_software_spec.rb
@@ -1,5 +1,5 @@
require 'testing_env'
-require 'formula_support'
+require 'software_spec'
require 'bottles'
class SoftwareSpecTests < Test::Unit::TestCase