119 строки
2.8 KiB
Bash
119 строки
2.8 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
# Keeping the default command
|
||
|
COMMAND=""
|
||
|
PYTHON=""
|
||
|
|
||
|
USAGE="$(basename "$0") [-h] [-i|--install] [-u|--uninstall] [-d|--disable] [-e|--enable] [-p|--update] [-m|--daemon]
|
||
|
|
||
|
Program to find the installed python on the box and invoke a Python extension script using Python 2.7.
|
||
|
|
||
|
where:
|
||
|
-h|--help show this help text
|
||
|
-i|--install install the extension
|
||
|
-u|--uninstall uninstall the extension
|
||
|
-d|--disable disable the extension
|
||
|
-e|--enable enable the extension
|
||
|
-p|--update update the extension
|
||
|
-m|--daemon invoke daemon option
|
||
|
-c|--command command to run
|
||
|
|
||
|
example:
|
||
|
# Install usage
|
||
|
$ bash extension_shim.sh -i
|
||
|
python ./main/handle.py -install
|
||
|
|
||
|
# Custom executable python file
|
||
|
$ bash extension_shim.sh -c ""hello.py"" -i
|
||
|
python hello.py -install
|
||
|
|
||
|
# Custom executable python file with arguments
|
||
|
$ bash extension_shim.sh -c ""hello.py --install""
|
||
|
python hello.py --install
|
||
|
"
|
||
|
|
||
|
function find_python(){
|
||
|
local python_exec_command=$1
|
||
|
|
||
|
# Check if there is python defined.
|
||
|
if command -v python >/dev/null 2>&1 ; then
|
||
|
eval ${python_exec_command}="python"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# Transform long options to short ones for getopts support (getopts doesn't support long args)
|
||
|
for arg in "$@"; do
|
||
|
shift
|
||
|
case "$arg" in
|
||
|
"--help") set -- "$@" "-h" ;;
|
||
|
"--install") set -- "$@" "-i" ;;
|
||
|
"--update") set -- "$@" "-p" ;;
|
||
|
"--enable") set -- "$@" "-e" ;;
|
||
|
"--disable") set -- "$@" "-d" ;;
|
||
|
"--uninstall") set -- "$@" "-u" ;;
|
||
|
"--daemon") set -- "$@" "-m" ;;
|
||
|
*) set -- "$@" "$arg"
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
if [ -z "$arg" ]
|
||
|
then
|
||
|
echo "$USAGE" >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Get the arguments
|
||
|
while getopts "iudephc:?" o; do
|
||
|
case "${o}" in
|
||
|
h|\?)
|
||
|
echo "$USAGE"
|
||
|
exit 0
|
||
|
;;
|
||
|
i)
|
||
|
operation="-install"
|
||
|
;;
|
||
|
u)
|
||
|
operation="-uninstall"
|
||
|
;;
|
||
|
d)
|
||
|
operation="-disable"
|
||
|
;;
|
||
|
e)
|
||
|
operation="-enable"
|
||
|
;;
|
||
|
p)
|
||
|
operation="-update"
|
||
|
;;
|
||
|
m)
|
||
|
operation="-daemon"
|
||
|
;;
|
||
|
c)
|
||
|
COMMAND="$OPTARG"
|
||
|
;;
|
||
|
*)
|
||
|
echo "$USAGE" >&2
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
shift "$((OPTIND-1))"
|
||
|
|
||
|
# If find_python is not able to find a python installed, $PYTHON will be null.
|
||
|
find_python PYTHON
|
||
|
|
||
|
if [ -z "$PYTHON" ]; then
|
||
|
echo "No Python interpreter found on the box" >&2
|
||
|
exit 51 # Not Supported
|
||
|
else
|
||
|
PYTHON_VER=`${PYTHON} --version 2>&1`
|
||
|
if [[ "$PYTHON_VER" =~ "Python 2.6" ]] || [[ "$PYTHON_VER" =~ "Python 2.7" ]]; then
|
||
|
echo $PYTHON_VER
|
||
|
else
|
||
|
echo "Expected Python 2.7, found $PYTHON_VER" >&2
|
||
|
exit 51 # Not Supported
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
${PYTHON} ${COMMAND} ${operation} 2>&1
|
||
|
# DONE
|