aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/formula.rb94
-rw-r--r--Library/Homebrew/formula_support.rb95
2 files changed, 96 insertions, 93 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index 2af3adec3..d53316fa7 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -1,98 +1,6 @@
require 'download_strategy'
require 'fileutils'
-
-# Defines a URL and download method for a stable or HEAD build
-class SoftwareSpecification
- attr_reader :url, :specs, :using
-
- VCS_SYMBOLS = {
- :bzr => BazaarDownloadStrategy,
- :curl => CurlDownloadStrategy,
- :cvs => CVSDownloadStrategy,
- :git => GitDownloadStrategy,
- :hg => MercurialDownloadStrategy,
- :nounzip => NoUnzipCurlDownloadStrategy,
- :post => CurlPostDownloadStrategy,
- :svn => SubversionDownloadStrategy,
- }
-
- def initialize url, specs=nil
- raise "No url provided" if url.nil?
- @url = url
- unless specs.nil?
- # Get download strategy hint, if any
- @using = specs.delete :using
- # The rest of the specs are for source control
- @specs = specs
- end
- end
-
- # Returns a suitable DownloadStrategy class that can be
- # used to retreive this software package.
- def download_strategy
- return detect_download_strategy(@url) if @using.nil?
-
- # If a class is passed, assume it is a download strategy
- return @using if @using.kind_of? Class
-
- detected = VCS_SYMBOLS[@using]
- raise "Unknown strategy #{@using} was requested." unless detected
- return detected
- end
-
- def detect_version
- Pathname.new(@url).version
- end
-end
-
-
-# Used to annotate formulae that duplicate OS X provided software
-# or cause conflicts when linked in.
-class KegOnlyReason
- attr_reader :reason, :explanation
-
- def initialize reason, explanation=nil
- @reason = reason
- @explanation = explanation
- end
-
- def to_s
- if @reason == :provided_by_osx
- <<-EOS.strip
-Mac OS X already provides this program and installing another version in
-parallel can cause all kinds of trouble.
-
-#{@explanation}
-EOS
- else
- @reason.strip
- end
- end
-end
-
-
-# Used to annotate formulae that won't build correctly with LLVM.
-class FailsWithLLVM
- attr_reader :msg, :data, :build
-
- def initialize msg=nil, data=nil
- if msg.nil? or msg.kind_of? Hash
- @msg = "(No specific reason was given)"
- data = msg
- else
- @msg = msg
- end
- @data = data
- @build = data.delete :build rescue nil
- end
-
- def reason
- s = @msg
- s += "Tested with LLVM build #{@build}" unless @build == nil
- s += "\n"
- return s
- end
-end
+require 'formula_support'
# Derive and define at least @url, see Library/Formula for examples
diff --git a/Library/Homebrew/formula_support.rb b/Library/Homebrew/formula_support.rb
new file mode 100644
index 000000000..6314f2951
--- /dev/null
+++ b/Library/Homebrew/formula_support.rb
@@ -0,0 +1,95 @@
+require 'download_strategy'
+
+
+# Defines a URL and download method for a stable or HEAD build
+class SoftwareSpecification
+ attr_reader :url, :specs, :using
+
+ VCS_SYMBOLS = {
+ :bzr => BazaarDownloadStrategy,
+ :curl => CurlDownloadStrategy,
+ :cvs => CVSDownloadStrategy,
+ :git => GitDownloadStrategy,
+ :hg => MercurialDownloadStrategy,
+ :nounzip => NoUnzipCurlDownloadStrategy,
+ :post => CurlPostDownloadStrategy,
+ :svn => SubversionDownloadStrategy,
+ }
+
+ def initialize url, specs=nil
+ raise "No url provided" if url.nil?
+ @url = url
+ unless specs.nil?
+ # Get download strategy hint, if any
+ @using = specs.delete :using
+ # The rest of the specs are for source control
+ @specs = specs
+ end
+ end
+
+ # Returns a suitable DownloadStrategy class that can be
+ # used to retreive this software package.
+ def download_strategy
+ return detect_download_strategy(@url) if @using.nil?
+
+ # If a class is passed, assume it is a download strategy
+ return @using if @using.kind_of? Class
+
+ detected = VCS_SYMBOLS[@using]
+ raise "Unknown strategy #{@using} was requested." unless detected
+ return detected
+ end
+
+ def detect_version
+ Pathname.new(@url).version
+ end
+end
+
+
+# Used to annotate formulae that duplicate OS X provided software
+# or cause conflicts when linked in.
+class KegOnlyReason
+ attr_reader :reason, :explanation
+
+ def initialize reason, explanation=nil
+ @reason = reason
+ @explanation = explanation
+ end
+
+ def to_s
+ if @reason == :provided_by_osx
+ <<-EOS.strip
+Mac OS X already provides this program and installing another version in
+parallel can cause all kinds of trouble.
+
+#{@explanation}
+EOS
+ else
+ @reason.strip
+ end
+ end
+end
+
+
+# Used to annotate formulae that won't build correctly with LLVM.
+class FailsWithLLVM
+ attr_reader :msg, :data, :build
+
+ def initialize msg=nil, data=nil
+ if msg.nil? or msg.kind_of? Hash
+ @msg = "(No specific reason was given)"
+ data = msg
+ else
+ @msg = msg
+ end
+ @data = data
+ @build = data.delete :build rescue nil
+ end
+
+ def reason
+ s = @msg
+ s += "Tested with LLVM build #{@build}" unless @build == nil
+ s += "\n"
+ return s
+ end
+end