Move formula resources to SoftwareSpec
This commit is contained in:
parent
df537528c7
commit
6116450328
@ -1,4 +1,3 @@
|
|||||||
require 'resource'
|
|
||||||
require 'dependency_collector'
|
require 'dependency_collector'
|
||||||
require 'formula_support'
|
require 'formula_support'
|
||||||
require 'formula_lock'
|
require 'formula_lock'
|
||||||
@ -57,9 +56,6 @@ class Formula
|
|||||||
end
|
end
|
||||||
|
|
||||||
@pin = FormulaPin.new(self)
|
@pin = FormulaPin.new(self)
|
||||||
|
|
||||||
@resources = self.class.resources
|
|
||||||
@resources.each_value { |r| r.owner = self }
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_spec(name)
|
def set_spec(name)
|
||||||
@ -97,13 +93,11 @@ class Formula
|
|||||||
def mirrors; active_spec.mirrors; end
|
def mirrors; active_spec.mirrors; end
|
||||||
|
|
||||||
def resource(name)
|
def resource(name)
|
||||||
res = @resources[name]
|
active_spec.resource(name)
|
||||||
raise ResourceMissingError.new(@name, name) if res.nil?
|
|
||||||
res
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def resources
|
def resources
|
||||||
@resources.values
|
active_spec.resources.values
|
||||||
end
|
end
|
||||||
|
|
||||||
# if the dir is there, but it's empty we consider it not installed
|
# if the dir is there, but it's empty we consider it not installed
|
||||||
@ -705,17 +699,10 @@ class Formula
|
|||||||
@stable.mirror(val)
|
@stable.mirror(val)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Hold any resources defined by this formula
|
|
||||||
def resources
|
|
||||||
@resources ||= Hash.new
|
|
||||||
end
|
|
||||||
|
|
||||||
# Define a named resource using a SoftwareSpec style block
|
# Define a named resource using a SoftwareSpec style block
|
||||||
def resource name, &block
|
def resource name, &block
|
||||||
raise DuplicateResourceError.new(name) if resources.has_key?(name)
|
@stable ||= SoftwareSpec.new
|
||||||
resource = Resource.new(name)
|
@stable.resource(name, &block)
|
||||||
resource.instance_eval(&block)
|
|
||||||
resources[name] = resource
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def dependencies
|
def dependencies
|
||||||
|
|||||||
@ -18,7 +18,7 @@ class Resource
|
|||||||
# XXX: for bottles, address this later
|
# XXX: for bottles, address this later
|
||||||
attr_writer :url, :checksum
|
attr_writer :url, :checksum
|
||||||
|
|
||||||
def initialize name, url=nil, version=nil
|
def initialize name, url=nil, version=nil, &block
|
||||||
@name = name
|
@name = name
|
||||||
@url = url
|
@url = url
|
||||||
@version = version
|
@version = version
|
||||||
@ -26,6 +26,7 @@ class Resource
|
|||||||
@specs = {}
|
@specs = {}
|
||||||
@checksum = nil
|
@checksum = nil
|
||||||
@using = nil
|
@using = nil
|
||||||
|
instance_eval(&block) if block_given?
|
||||||
end
|
end
|
||||||
|
|
||||||
def downloader
|
def downloader
|
||||||
|
|||||||
@ -6,7 +6,8 @@ require 'version'
|
|||||||
class SoftwareSpec
|
class SoftwareSpec
|
||||||
extend Forwardable
|
extend Forwardable
|
||||||
|
|
||||||
def_delegators :@resource, :owner=
|
attr_reader :resources, :owner
|
||||||
|
|
||||||
def_delegators :@resource, :stage, :fetch
|
def_delegators :@resource, :stage, :fetch
|
||||||
def_delegators :@resource, :download_strategy, :verify_download_integrity
|
def_delegators :@resource, :download_strategy, :verify_download_integrity
|
||||||
def_delegators :@resource, :checksum, :mirrors, :specs, :using, :downloader
|
def_delegators :@resource, :checksum, :mirrors, :specs, :using, :downloader
|
||||||
@ -14,6 +15,21 @@ class SoftwareSpec
|
|||||||
|
|
||||||
def initialize url=nil, version=nil
|
def initialize url=nil, version=nil
|
||||||
@resource = Resource.new(:default, url, version)
|
@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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user