Skip to content

Commit

Permalink
Try all python interpreters found on the system.
Browse files Browse the repository at this point in the history
  • Loading branch information
fboender committed Dec 19, 2018
1 parent 68ba5fe commit f01cf04
Showing 1 changed file with 53 additions and 25 deletions.
78 changes: 53 additions & 25 deletions src/ansible-cmdb
Original file line number Diff line number Diff line change
Expand Up @@ -4,38 +4,66 @@
# Wrapper script to find python version to use.
#

# Find python binary
PY_BIN=$(which python)
if [ -z "$PY_BIN" ]; then
PY_BIN=$(which python3)
fi
if [ -z "$PY_BIN" ]; then
echo "No python found. Aborting"
exit 1
fi
# Debug message helper
dbg () {
[ "$DEBUG" -eq 1 ] && echo "$*" >&2
}

# Find suitable python binary
find_py_bin () {
which -a python | while read -r TRY_PY_BIN
do
dbg "Trying python bin: $TRY_PY_BIN"

PY_VMAJOR=$($TRY_PY_BIN -c "import sys; print(sys.version_info[0])")
PY_VMINOR=$($TRY_PY_BIN -c "import sys; print(sys.version_info[1])")

# Verify Python version
PY_VMAJOR=$($PY_BIN -c "import sys; print(sys.version_info[0])")
PY_VMINOR=$($PY_BIN -c "import sys; print(sys.version_info[1])")
if [ "$PY_VMAJOR" -eq 3 ]; then
echo "$TRY_PY_BIN"
exit 0
elif [ "$PY_VMAJOR" -eq 2 ] && [ "$PY_VMINOR" -gt "6" ]; then
echo "$TRY_PY_BIN"
exit 0
fi
done
}

if [ "$PY_VMAJOR" -eq 2 -a "$PY_VMINOR" -lt 7 ]; then
echo "Python v2.7 or v3.0 or higher is required" >&2
# Find path to the real ansible-cmdb python script
find_cmdb_bin () {
BIN_DIR=$(dirname $0)
if [ -f "$BIN_DIR/ansible-cmdb.py" ]; then
dbg "Trying ansible-cmdb bin: $BIN_DIR/ansible-cmdb.py"
echo "$BIN_DIR/ansible-cmdb.py"
elif [ -f "$BIN_DIR/../lib/ansible-cmdb/ansible-cmdb.py" ]; then
dbg "Trying ansible-cmdb bin: $BIN_DIR/../lib/ansible-cmdb/ansible-cmdb.py"
echo "$BIN_DIR/../lib/ansible-cmdb/ansible-cmdb.py"
elif [ -f "$BIN_DIR/../lib/ansiblecmdb/ansible-cmdb.py" ]; then
dbg "Trying ansible-cmdb bin: $BIN_DIR/../lib/ansiblecmdb/ansible-cmdb.py"
echo "$BIN_DIR/../lib/ansiblecmdb/ansible-cmdb.py"
else
echo "Couldn't find $BIN_DIR/ansible-cmdb.py in . or $BIN_DIR/../lib/ansible-cmdb/ or $BIN_DIR/../lib/ansiblecmdb/ (cwd=$PWD)" >&2
exit 2
fi
}

DEBUG=0
if [ "$1" = "-d" ] || [ "$1" = "--debug" ]; then
DEBUG=1
fi

PY_BIN="$(find_py_bin)"
if [ -z "$PY_BIN" ]; then
echo "No suitable python version found (required v2.7 or highger). Aborting" >&2
exit 1
fi

# Find path to the real ansible-cmdb python script
BIN_DIR=$(dirname $0)
if [ -f "$BIN_DIR/ansible-cmdb.py" ]; then
ANSIBLE_CMDB="$BIN_DIR/ansible-cmdb.py"
elif [ -f "$BIN_DIR/../lib/ansible-cmdb/ansible-cmdb.py" ]; then
ANSIBLE_CMDB="$BIN_DIR/../lib/ansible-cmdb/ansible-cmdb.py"
elif [ -f "$BIN_DIR/../lib/ansiblecmdb/ansible-cmdb.py" ]; then
ANSIBLE_CMDB="$BIN_DIR/../lib/ansiblecmdb/ansible-cmdb.py"
else
echo "Couldn't find $BIN_DIR/ansible-cmdb.py in . or $BIN_DIR/../lib/ansible-cmdb/ or $BIN_DIR/../lib/ansiblecmdb/ (cwd=$PWD)" >&2
CMDB_BIN="$(find_cmdb_bin)"
if [ -z "$CMDB_BIN" ]; then
echo "Couldn't find ansible-cmdb.py. Aborting" >&2
exit 2
fi

# Run it
$PY_BIN $ANSIBLE_CMDB "$@"
dbg "Using python bin $PY_BIN"
dbg "Using ansible-cmdb bin $CMDB_BIN"
$PY_BIN $CMDB_BIN "$@"

0 comments on commit f01cf04

Please sign in to comment.