aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/software_spec.rb
diff options
context:
space:
mode:
authorJack Nagel2013-09-17 21:25:39 -0500
committerJack Nagel2013-09-17 21:29:52 -0500
commitbf2906ed9bb1910d82115012bf5e2b5b497b7d0f (patch)
tree2469b3232c0490632e20608844d58cd2f17f9f72 /Library/Homebrew/software_spec.rb
parentcc51ab41dbcf80f2bb37584d45eaaa99ac9580b8 (diff)
downloadhomebrew-bf2906ed9bb1910d82115012bf5e2b5b497b7d0f.tar.bz2
Move formula resources to SoftwareSpec
Diffstat (limited to 'Library/Homebrew/software_spec.rb')
-rw-r--r--Library/Homebrew/software_spec.rb18
1 files changed, 17 insertions, 1 deletions
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