aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/compat/requirements/language_module_requirement.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/compat/requirements/language_module_requirement.rb')
-rw-r--r--Library/Homebrew/compat/requirements/language_module_requirement.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/Library/Homebrew/compat/requirements/language_module_requirement.rb b/Library/Homebrew/compat/requirements/language_module_requirement.rb
new file mode 100644
index 000000000..5ddce7a66
--- /dev/null
+++ b/Library/Homebrew/compat/requirements/language_module_requirement.rb
@@ -0,0 +1,63 @@
+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
+ s = <<~EOS
+ Unsatisfied dependency: #{@module_name}
+ Homebrew does not provide special #{@language.to_s.capitalize} dependencies; install with:
+ `#{command_line} #{@module_name}`
+ EOS
+
+ unless [:python, :perl, :ruby].include? @language
+ s += <<~EOS
+ You may need to: `brew install #{@language}`
+
+ EOS
+ end
+
+ s
+ end
+
+ def the_test
+ case @language
+ when :lua
+ ["/usr/bin/env", "luarocks-5.2", "show", @import_name.to_s]
+ when :lua51
+ ["/usr/bin/env", "luarocks-5.1", "show", @import_name.to_s]
+ when :perl
+ ["/usr/bin/env", "perl", "-e", "use #{@import_name}"]
+ when :python
+ ["/usr/bin/env", "python", "-c", "import #{@import_name}"]
+ when :python3
+ ["/usr/bin/env", "python3", "-c", "import #{@import_name}"]
+ when :ruby
+ ["/usr/bin/env", "ruby", "-rubygems", "-e", "require '#{@import_name}'"]
+ end
+ end
+
+ def command_line
+ case @language
+ when :lua then "luarocks-5.2 install"
+ when :lua51 then "luarocks-5.1 install"
+ when :perl then "cpan -i"
+ when :python then "pip install"
+ when :python3 then "pip3 install"
+ when :ruby then "gem install"
+ end
+ end
+
+ def display_s
+ "#{@module_name} (#{@language} module)"
+ end
+end