diff options
| author | Jack Nagel | 2013-09-17 21:25:39 -0500 |
|---|---|---|
| committer | Jack Nagel | 2013-09-17 21:29:52 -0500 |
| commit | bf2906ed9bb1910d82115012bf5e2b5b497b7d0f (patch) | |
| tree | 2469b3232c0490632e20608844d58cd2f17f9f72 | |
| parent | cc51ab41dbcf80f2bb37584d45eaaa99ac9580b8 (diff) | |
| download | homebrew-bf2906ed9bb1910d82115012bf5e2b5b497b7d0f.tar.bz2 | |
Move formula resources to SoftwareSpec
| -rw-r--r-- | Library/Homebrew/formula.rb | 21 | ||||
| -rw-r--r-- | Library/Homebrew/resource.rb | 3 | ||||
| -rw-r--r-- | Library/Homebrew/software_spec.rb | 18 |
3 files changed, 23 insertions, 19 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index db0e9e02b..075cd087f 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1,4 +1,3 @@ -require 'resource' require 'dependency_collector' require 'formula_support' require 'formula_lock' @@ -57,9 +56,6 @@ class Formula end @pin = FormulaPin.new(self) - - @resources = self.class.resources - @resources.each_value { |r| r.owner = self } end def set_spec(name) @@ -97,13 +93,11 @@ class Formula def mirrors; active_spec.mirrors; end def resource(name) - res = @resources[name] - raise ResourceMissingError.new(@name, name) if res.nil? - res + active_spec.resource(name) end def resources - @resources.values + active_spec.resources.values end # if the dir is there, but it's empty we consider it not installed @@ -705,17 +699,10 @@ class Formula @stable.mirror(val) end - # Hold any resources defined by this formula - def resources - @resources ||= Hash.new - end - # Define a named resource using a SoftwareSpec style block def resource name, &block - raise DuplicateResourceError.new(name) if resources.has_key?(name) - resource = Resource.new(name) - resource.instance_eval(&block) - resources[name] = resource + @stable ||= SoftwareSpec.new + @stable.resource(name, &block) end def dependencies diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index ee04014a8..c089c4ee5 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -18,7 +18,7 @@ class Resource # XXX: for bottles, address this later attr_writer :url, :checksum - def initialize name, url=nil, version=nil + def initialize name, url=nil, version=nil, &block @name = name @url = url @version = version @@ -26,6 +26,7 @@ class Resource @specs = {} @checksum = nil @using = nil + instance_eval(&block) if block_given? end def downloader diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb index 6f8191f78..eedbf47b4 100644 --- a/Library/Homebrew/software_spec.rb +++ b/Library/Homebrew/software_spec.rb @@ -6,7 +6,8 @@ require 'version' class SoftwareSpec extend Forwardable - def_delegators :@resource, :owner= + attr_reader :resources, :owner + def_delegators :@resource, :stage, :fetch def_delegators :@resource, :download_strategy, :verify_download_integrity def_delegators :@resource, :checksum, :mirrors, :specs, :using, :downloader @@ -14,6 +15,21 @@ class SoftwareSpec def initialize url=nil, version=nil @resource = Resource.new(:default, url, version) + @resources = {} + end + + def owner= owner + @resource.owner = owner + resources.each_value { |r| r.owner = owner } + end + + def resource name, &block + if block_given? + raise DuplicateResourceError.new(name) if resources.has_key?(name) + resources[name] = Resource.new(name, &block) + else + resources.fetch(name) { raise ResourceMissingError.new(owner, name) } + end end end |
