Pass the downloader a proxy object instead of the resource

We need to limit the interface that is exposed to the downloader in
order to make future changes easier.

This will be important for work on new features, such as selecting
a mirror from the command line.

In the future, the existing Resource class will probably be split into
multiple classes.
This commit is contained in:
Jack Nagel 2014-12-05 22:11:23 -05:00
parent 853399da44
commit d157301cdc

View File

@ -16,6 +16,28 @@ class Resource
# formula name before initialization of the formula # formula name before initialization of the formula
attr_accessor :name, :owner attr_accessor :name, :owner
class Download
def initialize(resource)
@resource = resource
end
def url
@resource.url
end
def specs
@resource.specs
end
def version
@resource.version
end
def mirrors
@resource.mirrors
end
end
def initialize name=nil, &block def initialize name=nil, &block
@name = name @name = name
@url = nil @url = nil
@ -28,7 +50,7 @@ class Resource
end end
def downloader def downloader
@downloader ||= download_strategy.new(download_name, self) @downloader ||= download_strategy.new(download_name, Download.new(self))
end end
# Removes /s from resource names; this allows go package names # Removes /s from resource names; this allows go package names