Refactor the blacklists
Also don't abort searches if the query matches a blacklist. Eg. `brew search vim` should return macvim and the information that vim itself is not packaged.
This commit is contained in:
parent
cf29569099
commit
719e6c8999
49
Library/Homebrew/blacklist.rb
Normal file
49
Library/Homebrew/blacklist.rb
Normal file
@ -0,0 +1,49 @@
|
||||
def blacklisted? name
|
||||
case name.downcase
|
||||
when 'vim', 'screen', /^rubygems?$/ then <<-EOS.undent
|
||||
Apple distributes #{name} with OS X, you can find it in /usr/bin.
|
||||
EOS
|
||||
when 'libxml', 'libarchive', 'libpcap' then <<-EOS.undent
|
||||
Apple distributes #{name} with OS X, you can find it in /usr/lib.
|
||||
EOS
|
||||
when 'libxlst', 'freetype', 'libpng' then <<-EOS.undent
|
||||
Apple distributes #{name} with OS X, you can find it in /usr/X11/lib.
|
||||
However not all build scripts look here, so you may need to call ENV.x11 or
|
||||
ENV.libxml2 in your formula's install function.
|
||||
EOS
|
||||
when 'wxwidgets' then <<-EOS.undent
|
||||
An old version of wxWidgets can be found in /usr/X11/lib. However, Homebrew
|
||||
does provide a newer version, 2.8.10:
|
||||
|
||||
brew install wxmac
|
||||
EOS
|
||||
when 'tex', 'tex-live', 'texlive' then <<-EOS.undent
|
||||
Installing TeX from source is weird and gross, requires a lot of patches,
|
||||
and only builds 32-bit (and thus can't use Homebrew deps on Snow Leopard.)
|
||||
|
||||
We recommend using a MacTeX distribution: http://www.tug.org/mactex/
|
||||
EOS
|
||||
when 'mercurial', 'hg' then <<-EOS.undent
|
||||
Install Mercurial with pip:
|
||||
|
||||
brew install pip && pip install mercurial
|
||||
|
||||
Or easy_install:
|
||||
|
||||
easy_install mercurial
|
||||
EOS
|
||||
when 'setuptools' then <<-EOS.undent
|
||||
When working with a Homebrew-built Python, distribute is preferred over
|
||||
setuptools, and can be used as the prerequisite for pip:
|
||||
|
||||
brew install distribute
|
||||
EOS
|
||||
when 'npm' then <<-EOS.undent
|
||||
npm can be installed thusly by following the instructions at
|
||||
http://npmjs.org/
|
||||
|
||||
To do it in one line, use this command:
|
||||
curl http://npmjs.org/install.sh | sudo sh
|
||||
EOS
|
||||
end
|
||||
end
|
||||
@ -1,4 +1,5 @@
|
||||
require 'formula'
|
||||
require 'blacklist'
|
||||
|
||||
module Homebrew extend self
|
||||
def create
|
||||
@ -26,7 +27,7 @@ module Homebrew extend self
|
||||
|
||||
unless ARGV.force?
|
||||
if msg = blacklisted?(fc.name)
|
||||
raise "#{msg}\n\nIf you really want to make this formula use --force."
|
||||
raise "#{fc.name} is blacklisted for creation.\n#{msg}\nIf you really want to create this formula use --force."
|
||||
end
|
||||
|
||||
if Formula.aliases.include? fc.name
|
||||
@ -49,34 +50,6 @@ module Homebrew extend self
|
||||
gots = $stdin.gets.chomp
|
||||
if gots.empty? then nil else gots end
|
||||
end
|
||||
|
||||
def blacklisted? name
|
||||
case name.downcase
|
||||
when 'vim', 'screen' then <<-EOS.undent
|
||||
#{name} is blacklisted for creation
|
||||
Apple distributes this program with OS X.
|
||||
EOS
|
||||
when 'libarchive', 'libpcap' then <<-EOS.undent
|
||||
#{name} is blacklisted for creation
|
||||
Apple distributes this library with OS X, you can find it in /usr/lib.
|
||||
EOS
|
||||
when 'libxml', 'libxlst', 'freetype', 'libpng' then <<-EOS.undent
|
||||
#{name} is blacklisted for creation
|
||||
Apple distributes this library with OS X, you can find it in /usr/X11/lib.
|
||||
However not all build scripts look here, so you may need to call ENV.x11 or
|
||||
ENV.libxml2 in your formula's install function.
|
||||
EOS
|
||||
when /^rubygems?$/
|
||||
"Sorry RubyGems comes with OS X so we don't package it."
|
||||
when 'wxwidgets' then <<-EOS.undent
|
||||
#{name} is blacklisted for creation
|
||||
An older version of wxWidgets is provided by Apple with OS X, but
|
||||
a formula for wxWidgets 2.8.10 is provided:
|
||||
|
||||
brew install wxmac
|
||||
EOS
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class FormulaCreator
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
require 'formula_installer'
|
||||
require 'hardware'
|
||||
require 'blacklist'
|
||||
|
||||
module Homebrew extend self
|
||||
def install
|
||||
blacklisted? ARGV.named do |msg, name|
|
||||
abort msg
|
||||
ARGV.named.each do |name|
|
||||
msg = blacklisted? name
|
||||
raise "No available formula for #{name}\n#{msg}" if msg
|
||||
end unless ARGV.force?
|
||||
|
||||
install_formulae ARGV.formulae
|
||||
@ -62,41 +64,4 @@ module Homebrew extend self
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def blacklisted? names
|
||||
names.each do |name|
|
||||
msg = blacklisted_reason name
|
||||
yield msg.undent, name if msg
|
||||
end
|
||||
end
|
||||
|
||||
def blacklisted_reason name
|
||||
case name
|
||||
when 'tex', 'tex-live', 'texlive' then <<-EOS
|
||||
Installing TeX from source is weird and gross, requires a lot of patches,
|
||||
and only builds 32-bit (and thus can't use Homebrew deps on Snow Leopard.)
|
||||
|
||||
We recommend using a MacTeX distribution:
|
||||
http://www.tug.org/mactex/
|
||||
EOS
|
||||
when 'mercurial', 'hg' then <<-EOS
|
||||
Mercurial can be install thusly:
|
||||
brew install pip && pip install mercurial
|
||||
EOS
|
||||
when 'npm' then abort <<-EOS.undent
|
||||
npm can be installed thusly by following the instructions at
|
||||
http://npmjs.org/
|
||||
|
||||
To do it in one line, use this command:
|
||||
curl http://npmjs.org/install.sh | sudo sh
|
||||
EOS
|
||||
when 'setuptools' then abort <<-EOS.undent
|
||||
When working with a Homebrew-built Python, distribute is preferred
|
||||
over setuptools, and can be used as the prerequisite for pip.
|
||||
|
||||
Install distribute using:
|
||||
brew install distribute
|
||||
EOS
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
require "formula"
|
||||
require "blacklist"
|
||||
|
||||
module Homebrew extend self
|
||||
def search
|
||||
@ -6,14 +7,20 @@ module Homebrew extend self
|
||||
exec "open", "http://www.macports.org/ports.php?by=name&substr=#{ARGV.next}"
|
||||
elsif ARGV.include? '--fink'
|
||||
exec "open", "http://pdb.finkproject.org/pdb/browse.php?summary=#{ARGV.next}"
|
||||
else
|
||||
query = ARGV.first
|
||||
search_results = search_brews query
|
||||
puts_columns search_results
|
||||
|
||||
if $stdout.tty? and msg = blacklisted?(query)
|
||||
unless search_results.empty?
|
||||
puts
|
||||
puts "If you meant `#{query}' precisely:"
|
||||
puts
|
||||
end
|
||||
puts msg
|
||||
end
|
||||
end
|
||||
|
||||
require 'cmd/install' # for blacklisted? function
|
||||
blacklisted? ARGV.named do |msg, _|
|
||||
abort msg
|
||||
end unless ARGV.force?
|
||||
|
||||
puts_columns search_brews(ARGV.first)
|
||||
end
|
||||
|
||||
def search_brews text
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user