From bc98fd37882c64c896dc2243fcc6e129f170a32a Mon Sep 17 00:00:00 2001 From: Christian Moritz Date: Wed, 27 Apr 2016 18:08:44 +0200 Subject: Language::Node.npm_install_args: add helper method (#37) * add Language::Node helper module This adds a language module for Node module based formulas. It contains the 2 public methods `std_npm_install_args(libexec)` and `local_npm_install_args`: * `std_npm_install_args` is intended to be used in formulas for standard node modules and returns `npm install` args for a global style module installation to libexec. * `local_npm_install_args` is for formulas, in which the `npm install` step is only one of multiple parts of the installation process and returns `npm install` args for a default local installation in place. Both methods have in common, that they are * making sure that a working copy of npm and node-gyp from node's libexec is prepended to the PATH (to not rely of a user managed npm) * seting the npm cache to HOMEBREW_CACHE/npm, which fixes issues caused by overriding $HOME resulting in long install times + high disk usage (see https://github.com/Homebrew/brew/pull/37#issuecomment-208840366) * audit: update npm install check for Language::Node * cleanup: remove npm_cache too * doc: add Node-for-Formula-Authors.md --- Library/Homebrew/cmd/audit.rb | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'Library/Homebrew/cmd') diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb index eca4fbb1e..64b61ec22 100644 --- a/Library/Homebrew/cmd/audit.rb +++ b/Library/Homebrew/cmd/audit.rb @@ -656,13 +656,6 @@ class FormulaAuditor if text =~ /def plist/ && text !~ /plist_options/ problem "Please set plist_options when using a formula-defined plist." end - - if text =~ /system "npm", "install"/ && text !~ %r[opt_libexec\}/npm/bin] && formula.name !~ /^kibana(\d{2})?$/ - need_npm = "\#{Formula[\"node\"].opt_libexec\}/npm/bin" - problem <<-EOS.undent - Please add ENV.prepend_path \"PATH\", \"#{need_npm}"\ to def install - EOS - end end def audit_line(line, lineno) @@ -885,6 +878,10 @@ class FormulaAuditor problem "Use `assert_match` instead of `assert ...include?`" end + if line =~ /system "npm", "install"/ && line !~ /Language::Node/ + problem "Use Language::Node for npm install args" + end + if @strict if line =~ /system (["'][^"' ]*(?:\s[^"' ]*)+["'])/ bad_system = $1 -- cgit v1.2.3