aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/requirements/language_module_requirement.rb
diff options
context:
space:
mode:
authorMike McQuaid2015-06-15 09:56:04 +0100
committerMike McQuaid2015-06-16 08:12:01 +0100
commit1e867302891f04ba7857d86ea641315d2e1c8e4d (patch)
tree0ea500fbe4039445995282260b8fe7a465b7995c /Library/Homebrew/requirements/language_module_requirement.rb
parentf13ac9b0c8c03ccb72aeed29d2969014d7f660e8 (diff)
downloadbrew-1e867302891f04ba7857d86ea641315d2e1c8e4d.tar.bz2
Rename requirements named *Dependency.
Dependency is another similar, related class and it's super confusing to have some Requirements that are named *Dependency. Closes Homebrew/homebrew#38891. Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library/Homebrew/requirements/language_module_requirement.rb')
-rw-r--r--Library/Homebrew/requirements/language_module_requirement.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/Library/Homebrew/requirements/language_module_requirement.rb b/Library/Homebrew/requirements/language_module_requirement.rb
new file mode 100644
index 000000000..47cbe8bc1
--- /dev/null
+++ b/Library/Homebrew/requirements/language_module_requirement.rb
@@ -0,0 +1,51 @@
+require 'requirement'
+
+class LanguageModuleRequirement < Requirement
+ fatal true
+
+ def initialize language, module_name, import_name=nil
+ @language = language
+ @module_name = module_name
+ @import_name = import_name || module_name
+ super([language, module_name, import_name])
+ end
+
+ satisfy(:build_env => false) { quiet_system(*the_test) }
+
+ def message; <<-EOS.undent
+ Unsatisfied dependency: #{@module_name}
+ Homebrew does not provide #{@language.to_s.capitalize} dependencies; install with:
+ #{command_line} #{@module_name}
+ EOS
+ end
+
+ def the_test
+ case @language
+ when :chicken then %W{/usr/bin/env csi -e (use\ #{@import_name})}
+ when :jruby then %W{/usr/bin/env jruby -rubygems -e require\ '#{@import_name}'}
+ when :lua then %W{/usr/bin/env luarocks show #{@import_name}}
+ when :node then %W{/usr/bin/env node -e require('#{@import_name}');}
+ when :ocaml then %W{/usr/bin/env opam list --installed #{@import_name}}
+ when :perl then %W{/usr/bin/env perl -e use\ #{@import_name}}
+ when :python then %W{/usr/bin/env python -c import\ #{@import_name}}
+ when :python3 then %W{/usr/bin/env python3 -c import\ #{@import_name}}
+ when :ruby then %W{/usr/bin/env ruby -rubygems -e require\ '#{@import_name}'}
+ when :rbx then %W{/usr/bin/env rbx -rubygems -e require\ '#{@import_name}'}
+ end
+ end
+
+ def command_line
+ case @language
+ when :chicken then "chicken-install"
+ when :jruby then "jruby -S gem install"
+ when :lua then "luarocks install"
+ when :node then "npm install"
+ when :ocaml then "opam install"
+ when :perl then "cpan -i"
+ when :python then "pip install"
+ when :python3 then "pip3 install"
+ when :rbx then "rbx gem install"
+ when :ruby then "gem install"
+ end
+ end
+end