aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorMax Howell2010-03-09 02:18:08 +0000
committerAdam Vandenberg2010-08-07 18:08:48 -0700
commitef6488bf5ede474aeffd3cb696078f04bdea7667 (patch)
tree60c1ee72b5bff249b4cdd9191fd58d2ddf383358 /Library/Homebrew
parent7768e59a509bc3c93dccce13d74c9ca60e219241 (diff)
downloadbrew-ef6488bf5ede474aeffd3cb696078f04bdea7667.tar.bz2
New Aliasing system is plenty less code :)
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/formula.rb100
1 files changed, 15 insertions, 85 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index d6dbb7441..b2c684d92 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -11,61 +11,6 @@ class FormulaUnavailableError <RuntimeError
end
-# The Formulary is the collection of all Formulae, of course.
-class Formulary
- # Returns all formula names as strings, with or without aliases
- def self.names with_aliases=false
- filenames = (HOMEBREW_REPOSITORY+'Library/Formula').children.select {|f| f.to_s =~ /\.rb$/ }
- everything = filenames.map{|f| f.basename('.rb').to_s }
- everything.push *Formulary.get_aliases.keys if with_aliases
- everything.sort
- end
-
- def self.paths
- Dir["#{HOMEBREW_REPOSITORY}/Library/Formula/*.rb"]
- end
-
- def self.read name
- require Formula.path(name) rescue return nil
- klass_name = Formula.class_s(name)
- eval(klass_name)
- end
-
- def self.read_all
- # yields once for each
- Formulary.names.each do |name|
- begin
- require Formula.path(name)
- klass_name = Formula.class_s(name)
- klass = eval(klass_name)
- yield name, klass
- rescue Exception=>e
- opoo "Error importing #{name}:"
- puts "#{e}"
- end
- end
- end
-
- # returns a map of aliases to actual names
- # eg { 'ocaml' => 'objective-caml' }
- def self.get_aliases
- aliases = {}
- Formulary.read_all do |name, klass|
- aka = klass.aliases
- next if aka == nil
-
- aka.each {|item| aliases[item.to_s] = name }
- end
- return aliases
- end
-
- def self.find_alias name
- aliases = Formulary.get_aliases
- return aliases[name]
- end
-end
-
-
# Derive and define at least @url, see Library/Formula for examples
class Formula
include FileUtils
@@ -235,21 +180,19 @@ class Formula
name.capitalize.gsub(/[-_.\s]([a-zA-Z0-9])/) { $1.upcase } \
.gsub('+', 'x')
end
-
- def self.get_used_by
- used_by = {}
- Formulary.read_all do |name, klass|
- deps = klass.deps
- next if deps == nil
-
- deps.each do |dep|
- _deps = used_by[dep] || []
- _deps << name unless _deps.include? name
- used_by[dep] = _deps
- end
- end
-
- return used_by
+
+ # an array of all Formula names
+ def self.names
+ Dir["#{HOMEBREW_REPOSITORY}/Library/Formula/*.rb"].map{ |f| File.basename f, '.rb' }.sort
+ end
+
+ # an array of all Formula, instantiated
+ def self.all
+ names.map{ |fn| Formula.factory(fn) }
+ end
+
+ def self.aliases
+ Dir["#{HOMEBREW_REPOSITORY}/Library/Aliases/*"].map{ |f| File.basename f }.sort
end
def self.factory name
@@ -259,15 +202,7 @@ class Formula
require name
name = path.stem
else
- begin
- require self.path(name)
- rescue LoadError => e
- # Couldn't find formula 'name', so look for an alias.
- real_name = Formulary.find_alias name
- raise e if real_name == nil
- puts "#{name} is an alias for #{real_name}"
- name = real_name
- end
+ require self.path(name)
end
begin
klass_name =self.class_s(name)
@@ -495,7 +430,7 @@ EOF
end
end
- attr_rw :url, :version, :homepage, :specs, :deps, :external_deps, :aliases, *CHECKSUM_TYPES
+ attr_rw :url, :version, :homepage, :specs, :deps, :external_deps, *CHECKSUM_TYPES
def head val=nil, specs=nil
if specs
@@ -503,11 +438,6 @@ EOF
end
val.nil? ? @head : @head = val
end
-
- def aka *args
- @aliases ||= []
- args.each { |item| @aliases << item.to_s }
- end
def depends_on name
@deps ||= []