aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/bottles.rb13
-rw-r--r--Library/Homebrew/cmd/bottle.rb9
-rw-r--r--Library/Homebrew/software_spec.rb24
-rw-r--r--Library/Homebrew/test/test_bottle_filename.rb14
4 files changed, 36 insertions, 24 deletions
diff --git a/Library/Homebrew/bottles.rb b/Library/Homebrew/bottles.rb
index 0f5d36963..a85917717 100644
--- a/Library/Homebrew/bottles.rb
+++ b/Library/Homebrew/bottles.rb
@@ -3,14 +3,6 @@ require 'os/mac'
require 'extend/ARGV'
require 'bottle_version'
-def bottle_filename options={}
- name = options.fetch(:name)
- version = options.fetch(:version)
- tag = options.fetch(:tag)
- revision = options.fetch(:revision)
- "#{name}-#{version}.#{tag}#{bottle_suffix(revision)}"
-end
-
def built_as_bottle? f
return false unless f.installed?
tab = Tab.for_keg(f.installed_prefix)
@@ -36,8 +28,9 @@ def bottle_native_regex
/(\.#{bottle_tag}\.bottle\.(\d+\.)?tar\.gz)$/o
end
-def bottle_url(root_url, filename_options)
- "#{root_url}/#{bottle_filename(filename_options)}"
+def bottle_url(root_url, *filename_args)
+ filename = Bottle::Filename.new(*filename_args)
+ "#{root_url}/#{filename}"
end
def bottle_tag
diff --git a/Library/Homebrew/cmd/bottle.rb b/Library/Homebrew/cmd/bottle.rb
index c74bb1921..8bd1c4b9e 100644
--- a/Library/Homebrew/cmd/bottle.rb
+++ b/Library/Homebrew/cmd/bottle.rb
@@ -125,12 +125,7 @@ module Homebrew
bottle_revision = max ? max + 1 : 0
end
- filename = bottle_filename(
- :name => f.name,
- :version => f.pkg_version,
- :revision => bottle_revision,
- :tag => bottle_tag
- )
+ filename = Bottle::Filename.new(f.name, f.pkg_version, bottle_tag, bottle_revision)
if bottle_filename_formula_name(filename).empty?
return ofail "Add a new regex to bottle_version.rb to parse #{f.version} from #{filename}"
@@ -197,7 +192,7 @@ module Homebrew
puts output
if ARGV.include? '--rb'
- bottle_base = filename.gsub(bottle_suffix(bottle_revision), '')
+ bottle_base = filename.to_s.gsub(bottle_suffix(bottle_revision), '')
File.open "#{bottle_base}.bottle.rb", 'w' do |file|
file.write output
end
diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb
index a2e94e6f0..dca84da21 100644
--- a/Library/Homebrew/software_spec.rb
+++ b/Library/Homebrew/software_spec.rb
@@ -113,6 +113,22 @@ class HeadSoftwareSpec < SoftwareSpec
end
class Bottle
+ class Filename
+ attr_reader :name, :version, :tag, :revision
+
+ def initialize(name, version, tag, revision)
+ @name = name
+ @version = version
+ @tag = tag
+ @revision = revision
+ end
+
+ def to_s
+ "#{name}-#{version}.#{tag}#{bottle_suffix(revision)}"
+ end
+ alias_method :to_str, :to_s
+ end
+
extend Forwardable
attr_reader :name, :resource, :prefix, :cellar, :revision
@@ -127,13 +143,7 @@ class Bottle
checksum, tag = spec.checksum_for(bottle_tag)
- @resource.url = bottle_url(
- spec.root_url,
- :name => formula.name,
- :version => formula.pkg_version,
- :revision => spec.revision,
- :tag => tag
- )
+ @resource.url = bottle_url(spec.root_url, formula.name, formula.pkg_version, tag, spec.revision)
@resource.download_strategy = CurlBottleDownloadStrategy
@resource.version = formula.pkg_version
@resource.checksum = checksum
diff --git a/Library/Homebrew/test/test_bottle_filename.rb b/Library/Homebrew/test/test_bottle_filename.rb
new file mode 100644
index 000000000..09dc29e5f
--- /dev/null
+++ b/Library/Homebrew/test/test_bottle_filename.rb
@@ -0,0 +1,14 @@
+require "testing_env"
+require "software_spec"
+
+class BottleFilenameTests < Homebrew::TestCase
+ def fn(revision)
+ Bottle::Filename.new("foo", "1.0", :tag, revision)
+ end
+
+ def test_to_str
+ expected = "foo-1.0.tag.bottle.tar.gz"
+ assert_equal expected, fn(0).to_s
+ assert_equal expected, fn(0).to_str
+ end
+end