Split some classes to formula_support
formula.rb is getting big, let's start splitting things out.
This commit is contained in:
parent
e251e5e4ec
commit
fe6ab92857
@ -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
|
||||
|
||||
95
Library/Homebrew/formula_support.rb
Normal file
95
Library/Homebrew/formula_support.rb
Normal file
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user