Make launcher find python binary
This commit is contained in:
parent
32aa475903
commit
53eb3851d1
2 changed files with 75 additions and 1 deletions
18
bin/dotbot
18
bin/dotbot
|
@ -1,4 +1,20 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# This is a valid shell script and also a valid Python script. When this file
|
||||
# is executed as a shell script, it finds a python binary and executes this
|
||||
# file as a Python script, passing along all of the command line arguments.
|
||||
# When this file is executed as a Python script, it loads and runs Dotbot. This
|
||||
# is useful because we don't know the name of the python binary.
|
||||
|
||||
''':' # begin python string; this line is interpreted by the shell as `:`
|
||||
which python3 >/dev/null 2>&1 && exec python3 "$0" "$@"
|
||||
which python >/dev/null 2>&1 && exec python "$0" "$@"
|
||||
which python2 >/dev/null 2>&1 && exec python2 "$0" "$@"
|
||||
>&2 echo "error: cannot find python"
|
||||
return 1
|
||||
'''
|
||||
|
||||
# python code
|
||||
|
||||
import sys, os
|
||||
|
||||
|
|
58
test/tests/find-python-executable.bash
Normal file
58
test/tests/find-python-executable.bash
Normal file
|
@ -0,0 +1,58 @@
|
|||
test_description='can find python executable with different names'
|
||||
. '../test-lib.bash'
|
||||
|
||||
# the test machine needs to have a binary named `python`
|
||||
test_expect_success 'setup' '
|
||||
mkdir ~/tmp_bin &&
|
||||
(
|
||||
IFS=:
|
||||
for p in $PATH; do
|
||||
find $p -maxdepth 1 -mindepth 1 -exec sh -c \
|
||||
'"'"'ln -sf {} $HOME/tmp_bin/$(basename {})'"'"' \;
|
||||
done
|
||||
) &&
|
||||
rm -f ~/tmp_bin/python &&
|
||||
rm -f ~/tmp_bin/python2 &&
|
||||
rm -f ~/tmp_bin/python3
|
||||
'
|
||||
|
||||
test_expect_failure 'run' '
|
||||
PATH="$HOME/tmp_bin" run_dotbot <<EOF
|
||||
[]
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success 'setup 2' '
|
||||
touch ~/tmp_bin/python &&
|
||||
chmod +x ~/tmp_bin/python &&
|
||||
cat >> ~/tmp_bin/python <<EOF
|
||||
#!$HOME/tmp_bin/sh
|
||||
exec $(which python)
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success 'run 2' '
|
||||
PATH="$HOME/tmp_bin" run_dotbot <<EOF
|
||||
[]
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success 'setup 3' '
|
||||
mv ~/tmp_bin/python ~/tmp_bin/python2
|
||||
'
|
||||
|
||||
test_expect_success 'run 3' '
|
||||
PATH="$HOME/tmp_bin" run_dotbot <<EOF
|
||||
[]
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success 'setup 4' '
|
||||
mv ~/tmp_bin/python2 ~/tmp_bin/python3
|
||||
'
|
||||
|
||||
test_expect_success 'run 4' '
|
||||
PATH="$HOME/tmp_bin" run_dotbot <<EOF
|
||||
[]
|
||||
EOF
|
||||
'
|
Loading…
Reference in a new issue