aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXu Cheng2015-07-03 21:34:22 +0800
committerXu Cheng2015-07-06 18:04:59 +0800
commit024c2d508b2af9246d68861663331fba80b50a06 (patch)
tree32697fd01671493abcf8dd25535e075fb4c2f0ff
parentb78cbb731421847cb4d172934f8a56a9749d69e6 (diff)
downloadbrew-024c2d508b2af9246d68861663331fba80b50a06.tar.bz2
auto resolve bottle root_url based on tap
-rw-r--r--Library/Homebrew/bottles.rb2
-rw-r--r--Library/Homebrew/software_spec.rb14
-rw-r--r--Library/Homebrew/test/test_software_spec.rb13
3 files changed, 22 insertions, 7 deletions
diff --git a/Library/Homebrew/bottles.rb b/Library/Homebrew/bottles.rb
index ecbf70cc0..3fe921d7b 100644
--- a/Library/Homebrew/bottles.rb
+++ b/Library/Homebrew/bottles.rb
@@ -67,7 +67,7 @@ class Bintray
end
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, "")}"
end
end
diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb
index 060568664..9ace95e21 100644
--- a/Library/Homebrew/software_spec.rb
+++ b/Library/Homebrew/software_spec.rb
@@ -47,6 +47,7 @@ class SoftwareSpec
def owner= owner
@name = owner.name
@full_name = owner.full_name
+ @bottle_specification.tap = owner.tap
@owner = owner
@resource.owner = self
resources.each_value do |r|
@@ -259,19 +260,26 @@ class BottleSpecification
DEFAULT_PREFIX = "/usr/local".freeze
DEFAULT_CELLAR = "/usr/local/Cellar".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
def initialize
@revision = 0
@prefix = DEFAULT_PREFIX
@cellar = DEFAULT_CELLAR
- @root_url = DEFAULT_ROOT_URL
@collector = BottleCollector.new
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?
cellar == :any || cellar == HOMEBREW_CELLAR.to_s
end
diff --git a/Library/Homebrew/test/test_software_spec.rb b/Library/Homebrew/test/test_software_spec.rb
index af3a4b450..eb828f95c 100644
--- a/Library/Homebrew/test/test_software_spec.rb
+++ b/Library/Homebrew/test/test_software_spec.rb
@@ -22,19 +22,24 @@ class SoftwareSpecTests < Homebrew::TestCase
@spec.owner = Class.new do
def name; "test"; end
def full_name; "test"; end
+ def tap; "Homebrew/homebrew"; end
end.new
assert_raises(ResourceMissingError) { @spec.resource('foo') }
end
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
assert_equal owner, @spec.owner
end
def test_resource_owner
@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
@spec.resources.each_value { |r| assert_equal @spec, r.owner }
end
@@ -42,7 +47,9 @@ class SoftwareSpecTests < Homebrew::TestCase
def test_resource_without_version_receives_owners_version
@spec.url('foo-42')
@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
end