diff options
author | healther <healther@users.noreply.github.com> | 2017-08-18 20:57:52 +0200 |
---|---|---|
committer | scheibelp <scheibel1@llnl.gov> | 2017-08-18 11:57:52 -0700 |
commit | d6d2dff324347dc7dab1d453ef17378c752b8a78 (patch) | |
tree | 4bd05bb6fae77f3737164a57b365256a784c0c0c | |
parent | 6d155833c5a9f6c55e58d56e4aec09eb32fe1839 (diff) | |
download | spack-d6d2dff324347dc7dab1d453ef17378c752b8a78.tar.gz spack-d6d2dff324347dc7dab1d453ef17378c752b8a78.tar.bz2 spack-d6d2dff324347dc7dab1d453ef17378c752b8a78.tar.xz spack-d6d2dff324347dc7dab1d453ef17378c752b8a78.zip |
sbang support: add node-js and fix lua
This adds sbang hook support for node-js and fixes the sbang filter
for lua (the character class exclusion was swallowing newlines and
reporting a false positive if lua was mentioned anywhere in the
file).
-rwxr-xr-x | bin/sbang | 2 | ||||
-rw-r--r-- | lib/spack/spack/hooks/sbang.py | 9 |
2 files changed, 10 insertions, 1 deletions
@@ -104,6 +104,8 @@ lines=0 while read line && ((lines < 2)) ; do if [[ "$line" = '#!'* ]]; then interpreter="${line#\#!}" + elif [[ "$line" = '//!'*node* ]]; then + interpreter="${line#//!}" elif [[ "$line" = '--!'*lua* ]]; then interpreter="${line#--!}" fi diff --git a/lib/spack/spack/hooks/sbang.py b/lib/spack/spack/hooks/sbang.py index e86f8260b8..cd3529dbb8 100644 --- a/lib/spack/spack/hooks/sbang.py +++ b/lib/spack/spack/hooks/sbang.py @@ -62,10 +62,17 @@ def filter_shebang(path): if original.startswith(new_sbang_line): return + # In the following, newlines have to be excluded in the regular expression + # else any mention of "lua" in the document will lead to spurious matches. + # Use --! instead of #! on second line for lua. - if re.search(r'^#!(/[^/]*)*lua\b', original): + if re.search(r'^#!(/[^/\n]*)*lua\b', original): original = re.sub(r'^#', '--', original) + # Use //! instead of #! on second line for node.js. + if re.search(r'^#!(/[^/\n]*)*node\b', original): + original = re.sub(r'^#', '//', original) + # Change non-writable files to be writable if needed. saved_mode = None if not os.access(path, os.W_OK): |