auto resolve bottle root_url based on tap

This commit is contained in:
Xu Cheng 2015-07-03 21:34:22 +08:00
parent b78cbb7314
commit 024c2d508b
3 changed files with 22 additions and 7 deletions

View File

@ -67,7 +67,7 @@ class Bintray
end end
def self.repository(tap=nil) def self.repository(tap=nil)
return "bottles" if tap.to_s.empty? return "bottles" if tap.nil? || tap == "Homebrew/homebrew" || tap == "mxcl/master"
"bottles-#{tap.sub(/^homebrew\/(homebrew-)?/i, "")}" "bottles-#{tap.sub(/^homebrew\/(homebrew-)?/i, "")}"
end end
end end

View File

@ -47,6 +47,7 @@ class SoftwareSpec
def owner= owner def owner= owner
@name = owner.name @name = owner.name
@full_name = owner.full_name @full_name = owner.full_name
@bottle_specification.tap = owner.tap
@owner = owner @owner = owner
@resource.owner = self @resource.owner = self
resources.each_value do |r| resources.each_value do |r|
@ -259,19 +260,26 @@ class BottleSpecification
DEFAULT_PREFIX = "/usr/local".freeze DEFAULT_PREFIX = "/usr/local".freeze
DEFAULT_CELLAR = "/usr/local/Cellar".freeze DEFAULT_CELLAR = "/usr/local/Cellar".freeze
DEFAULT_DOMAIN = "https://homebrew.bintray.com".freeze DEFAULT_DOMAIN = "https://homebrew.bintray.com".freeze
DEFAULT_ROOT_URL = "#{DEFAULT_DOMAIN}/bottles".freeze
attr_rw :root_url, :prefix, :cellar, :revision attr_rw :prefix, :cellar, :revision
attr_accessor :tap
attr_reader :checksum, :collector attr_reader :checksum, :collector
def initialize def initialize
@revision = 0 @revision = 0
@prefix = DEFAULT_PREFIX @prefix = DEFAULT_PREFIX
@cellar = DEFAULT_CELLAR @cellar = DEFAULT_CELLAR
@root_url = DEFAULT_ROOT_URL
@collector = BottleCollector.new @collector = BottleCollector.new
end end
def root_url(var=nil)
if var.nil?
@root_url ||= "#{DEFAULT_DOMAIN}/#{Bintray.repository(tap)}"
else
@root_url = var
end
end
def compatible_cellar? def compatible_cellar?
cellar == :any || cellar == HOMEBREW_CELLAR.to_s cellar == :any || cellar == HOMEBREW_CELLAR.to_s
end end

View File

@ -22,19 +22,24 @@ class SoftwareSpecTests < Homebrew::TestCase
@spec.owner = Class.new do @spec.owner = Class.new do
def name; "test"; end def name; "test"; end
def full_name; "test"; end def full_name; "test"; end
def tap; "Homebrew/homebrew"; end
end.new end.new
assert_raises(ResourceMissingError) { @spec.resource('foo') } assert_raises(ResourceMissingError) { @spec.resource('foo') }
end end
def test_set_owner def test_set_owner
owner = stub(:name => 'some_name', :full_name => 'some_name') owner = stub :name => 'some_name',
:full_name => 'some_name',
:tap => "Homebrew/homebrew"
@spec.owner = owner @spec.owner = owner
assert_equal owner, @spec.owner assert_equal owner, @spec.owner
end end
def test_resource_owner def test_resource_owner
@spec.resource('foo') { url 'foo-1.0' } @spec.resource('foo') { url 'foo-1.0' }
@spec.owner = stub(:name => 'some_name', :full_name => 'some_name') @spec.owner = stub :name => 'some_name',
:full_name => 'some_name',
:tap => "Homebrew/homebrew"
assert_equal 'some_name', @spec.name assert_equal 'some_name', @spec.name
@spec.resources.each_value { |r| assert_equal @spec, r.owner } @spec.resources.each_value { |r| assert_equal @spec, r.owner }
end end
@ -42,7 +47,9 @@ class SoftwareSpecTests < Homebrew::TestCase
def test_resource_without_version_receives_owners_version def test_resource_without_version_receives_owners_version
@spec.url('foo-42') @spec.url('foo-42')
@spec.resource('bar') { url 'bar' } @spec.resource('bar') { url 'bar' }
@spec.owner = stub(:name => 'some_name', :full_name => 'some_name') @spec.owner = stub :name => 'some_name',
:full_name => 'some_name',
:tap => "Homebrew/homebrew"
assert_version_equal '42', @spec.resource('bar').version assert_version_equal '42', @spec.resource('bar').version
end end