Using the method from @cemeyer (https://github.com/espressif/esp-idf/pull/3166): find . -name \*.sh -exec sed -i "" -e 's|^#!.*bin/bash|#!/usr/bin/env bash|' {} + Closes https://github.com/espressif/esp-idf/pull/3166.
48 lines
1.7 KiB
Bash
Executable file
48 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Tool for running scripts with several versions of Python by the use of pyenv (versions must be installed before in
|
|
# the docker image)
|
|
#
|
|
# Examples:
|
|
# ./multirun_with_pyenv.sh ./exec.sh # Run ./exec.h with ALL installed versions of Python
|
|
# ./multirun_with_pyenv.sh ./exec.sh arg1 arg2 # Run ./exec.h with arguments (and ALL installed versions of Python)
|
|
# ./multirun_with_pyenv.sh -p 2.7.15 ./exec.sh # Run ./exec.h with Python 2.7.15 (-p must be the first argument)
|
|
# ./multirun_with_pyenv.sh -p 3.4.8,2.7.15 ./exec.sh # Run ./exec.h with Python 3.4.8 and 2.7.15 (versions must be
|
|
# # separated by coma and be without a space)
|
|
|
|
PY_VERSIONS=""
|
|
|
|
{ source /opt/pyenv/activate; } || { echo 'Pyenv activation has failed!' ; exit 1; }
|
|
|
|
if [ "$1" = "-p" ]; then
|
|
if [ "$#" -ge 2 ]; then
|
|
IFS=',' read -a PY_VERSIONS <<< "$2"
|
|
shift #remove -p
|
|
shift #remove argument after -p
|
|
else
|
|
echo 'No value (Python version) is given for argument -p!'
|
|
exit 1
|
|
fi
|
|
else
|
|
PY_VERSIONS=$(pyenv versions --bare)
|
|
fi
|
|
|
|
if [ "$#" -lt 1 ]; then
|
|
echo 'No executable was passed to the runner!'
|
|
exit 1
|
|
fi
|
|
|
|
for ver in ${PY_VERSIONS[@]}
|
|
do
|
|
echo 'Switching to Python' $ver
|
|
$(pyenv global $ver) || exit 1
|
|
echo 'Running' $@
|
|
$@ || {
|
|
echo 'Run failed! Switching back to the system version of the Python interpreter.';
|
|
pyenv global system;
|
|
exit 1;
|
|
}
|
|
done
|
|
|
|
echo 'Switching back to the system version of Python'
|
|
{ pyenv global system; } || { echo 'Restoring the system version of the Python interpreter has failed!' ; exit 1; }
|