Move formula resources to SoftwareSpec
This commit is contained in:
parent
df537528c7
commit
6116450328
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user