From 9a72fecf84a0860ae4fc8bb3d7e663a5c1c9c07d Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Thu, 5 Jul 2012 20:29:31 -0500 Subject: [PATCH] Decouple pathname from bottles Pathname is one of the basic building block classes in Homebrew, and as such it is preferrable that `require`ing it does not drag in other Homebrew code; thus avoiding circular dependency situations. Its dependency on bottles.rb gave it an implicit dependency on formula.rb, among other things. Signed-off-by: Jack Nagel --- Library/Homebrew/bottles.rb | 4 ++-- Library/Homebrew/extend/pathname.rb | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/bottles.rb b/Library/Homebrew/bottles.rb index 12679e2292..ad74c67106 100644 --- a/Library/Homebrew/bottles.rb +++ b/Library/Homebrew/bottles.rb @@ -56,11 +56,11 @@ def bottle_native_regex end def bottle_regex - /(\.[a-z]+\.bottle\.(\d+\.)?tar\.gz)$/ + Pathname::BOTTLE_EXTNAME_RX end def old_bottle_regex - /((\.[a-z]+)?[\.-]bottle\.tar\.gz)$/ + Pathname::OLD_BOTTLE_EXTNAME_RX end def bottle_base_url diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index 5edd8b6649..600e114a6d 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -1,11 +1,13 @@ require 'pathname' -require 'bottles' require 'mach' # we enhance pathname to make our code more readable class Pathname include MachO + BOTTLE_EXTNAME_RX = /(\.[a-z]+\.bottle\.(\d+\.)?tar\.gz)$/ + OLD_BOTTLE_EXTNAME_RX = /((\.[a-z]+)?[\.-]bottle\.tar\.gz)$/ + def install *sources results = [] sources.each do |src| @@ -122,8 +124,10 @@ class Pathname # extended to support common double extensions alias extname_old extname def extname - return $1 if to_s =~ bottle_regex - return $1 if to_s =~ old_bottle_regex + BOTTLE_EXTNAME_RX.match to_s + return $1 if $1 + OLD_BOTTLE_EXTNAME_RX.match to_s + return $1 if $1 /(\.(tar|cpio)\.(gz|bz2|xz|Z))$/.match to_s return $1 if $1 return File.extname(to_s)