From e9dc02dbb6ae61f1ddebbaec30ec53d04a4e743d Mon Sep 17 00:00:00 2001 From: Adam Vandenberg Date: Tue, 3 Jul 2012 07:49:30 -0700 Subject: Refactor dependencies in preparation for autotools symbol support --- Library/Homebrew/dependencies.rb | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/dependencies.rb b/Library/Homebrew/dependencies.rb index 1ca1298fb..adcd4f4ed 100644 --- a/Library/Homebrew/dependencies.rb +++ b/Library/Homebrew/dependencies.rb @@ -28,11 +28,20 @@ class DependencyCollector tag = nil spec, tag = spec.shift if spec.is_a? Hash - dep = case spec - when :x11, :libpng - X11Dependency.new(tag) + dep = parse_spec(spec, tag) + # Some symbol specs are conditional, and resolve to nil if there is no + # dependency needed for the current platform. + return if dep.nil? + # Add dep to the correct bucket + (dep.is_a?(Requirement) ? @external_deps : @deps) << dep + end + +private + + def parse_spec spec, tag + case spec when Symbol - raise "Unsupported special dependency #{spec}" + parse_symbol_spec(spec, tag) when String if LANGUAGE_MODULES.include? tag LanguageModuleDependency.new(tag, spec) @@ -46,8 +55,15 @@ class DependencyCollector else raise "Unsupported type #{spec.class} for #{spec}" end + end - (dep.is_a?(Requirement) ? @external_deps : @deps) << dep + def parse_symbol_spec spec, tag + case spec + when :x11, :libpng + X11Dependency.new(tag) + else + raise "Unsupported special dependency #{spec}" + end end end -- cgit v1.2.3