Skip to content

Commit

Permalink
sbang support: add node-js and fix lua
Browse files Browse the repository at this point in the history
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).
  • Loading branch information
healther authored and scheibelp committed Aug 18, 2017
1 parent 6d15583 commit d6d2dff
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
2 changes: 2 additions & 0 deletions bin/sbang
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 8 additions & 1 deletion lib/spack/spack/hooks/sbang.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down

0 comments on commit d6d2dff

Please sign in to comment.