diff options
| author | Jack Nagel | 2014-07-18 15:14:42 -0500 | 
|---|---|---|
| committer | Jack Nagel | 2014-07-18 15:14:57 -0500 | 
| commit | 03fdaecee7632722e93edef2322b9d9ce629de86 (patch) | |
| tree | e5f8faf90f2b72c8ed592d917f55db1eba9e2ee4 | |
| parent | 8eac19abd1165d677b45e7110335204d4abda6ef (diff) | |
| download | homebrew-03fdaecee7632722e93edef2322b9d9ce629de86.tar.bz2 | |
Move bottle filename construction to a class
| -rw-r--r-- | Library/Homebrew/bottles.rb | 13 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/bottle.rb | 9 | ||||
| -rw-r--r-- | Library/Homebrew/software_spec.rb | 24 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_bottle_filename.rb | 14 | 
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 | 
