Skip to content

Commit 3be977f

Browse files
authored
Fix detection of versioned perl/ruby binaries (#6)
Both perl and ruby can have versioned binaries, which sbang currently fails to detect. This PR adds support and two tests.
1 parent 4ee8228 commit 3be977f

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

sbang

+10-6
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,17 @@ EOF
7878
#
7979
# will be true for '#!/usr/bin/perl' and '#!/usr/bin/env perl'
8080
interpreter_is() {
81-
if [ "${interpreter##*/}" = "$1" ]; then
82-
return 0
83-
elif [ "$interpreter" = "/usr/bin/env" ] && [ "$arg1" = "$1" ]; then
84-
return 0
85-
else
86-
return 1
81+
case "${interpreter##*/}" in
82+
"$1"*) return 0 ;;
83+
esac
84+
85+
if [ "$interpreter" = "/usr/bin/env" ]; then
86+
case "$arg1" in
87+
"$1"*) return 0 ;;
88+
esac
8789
fi
90+
91+
return 1
8892
}
8993

9094
if interpreter_is "sbang"; then

test/shebangs/perl-ver.pl

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env sbang
2+
#!/usr/bin/perl5.32.0

test/shebangs/ruby-ver.rb

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/usr/bin/env sbang
2+
#!/usr/bin/ruby2.7
3+
4+
puts "ruby"

test/test-suite.sh

+3
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ equals "/usr/bin/env perl -w -x shebangs/perl-w-env.pl" $SBANG shebangs/perl-w-e
3434
equals "/usr/bin/ruby -x shebangs/ruby.rb" $SBANG shebangs/ruby.rb
3535
equals "/usr/bin/env ruby -x shebangs/ruby-env.rb" $SBANG shebangs/ruby-env.rb
3636

37+
equals "/usr/bin/perl5.32.0 -x shebangs/perl-ver.pl" $SBANG shebangs/perl-ver.pl
38+
equals "/usr/bin/ruby2.7 -x shebangs/ruby-ver.rb" $SBANG shebangs/ruby-ver.rb
39+
3740
equals "/usr/bin/python shebangs/python.py" $SBANG shebangs/python.py
3841
equals "/usr/bin/env python shebangs/python-env.py" $SBANG shebangs/python-env.py
3942

0 commit comments

Comments
 (0)