#!/bin/sh # # Copyright 2013 Google Inc. All Rights Reserved. # CLOUDSDK_PYTHON_SITEPACKAGES=1 # # # CLOUDSDK_ROOT_DIR (a) installation root dir # CLOUDSDK_PYTHON (u) python interpreter path # CLOUDSDK_PYTHON_ARGS (u) python interpreter arguments # CLOUDSDK_PYTHON_SITEPACKAGES (u) use python site packages # # (a) always defined by the preamble # (u) user definition overrides preamble # Wrapper around 'which' and 'command -v', tries which first, then falls back # to command -v _cloudsdk_which() { which "$1" 2>/dev/null || command -v "$1" 2>/dev/null } # Determines the real cloud sdk root dir given the script path. # Would be easier with a portable "readlink -f". _cloudsdk_root_dir() { case $1 in /*) _cloudsdk_path=$1 ;; */*) _cloudsdk_path=$PWD/$1 ;; *) _cloudsdk_path=$(_cloudsdk_which $1) case $_cloudsdk_path in /*) ;; *) _cloudsdk_path=$PWD/$_cloudsdk_path ;; esac ;; esac _cloudsdk_dir=0 while : do while _cloudsdk_link=$(readlink "$_cloudsdk_path") do case $_cloudsdk_link in /*) _cloudsdk_path=$_cloudsdk_link ;; *) _cloudsdk_path=$(dirname "$_cloudsdk_path")/$_cloudsdk_link ;; esac done case $_cloudsdk_dir in 1) break ;; esac if [ -d "${_cloudsdk_path}" ]; then break fi _cloudsdk_dir=1 _cloudsdk_path=$(dirname "$_cloudsdk_path") done while : do case $_cloudsdk_path in */) _cloudsdk_path=$(dirname "$_cloudsdk_path/.") ;; */.) _cloudsdk_path=$(dirname "$_cloudsdk_path") ;; */bin) dirname "$_cloudsdk_path" break ;; *) echo "$_cloudsdk_path" break ;; esac done } CLOUDSDK_ROOT_DIR=$(_cloudsdk_root_dir "$0") # if CLOUDSDK_PYTHON is empty if [ -z "$CLOUDSDK_PYTHON" ]; then # if python2 exists then plain python may point to a version != 2 if _cloudsdk_which python2 >/dev/null; then CLOUDSDK_PYTHON=python2 elif _cloudsdk_which python2.7 >/dev/null; then # this is what some OS X versions call their built-in Python CLOUDSDK_PYTHON=python2.7 elif _cloudsdk_which python >/dev/null; then # Use unversioned python if it exists. CLOUDSDK_PYTHON=python elif _cloudsdk_which python3 >/dev/null; then # We support python3, but only want to default to it if nothing else is # found. CLOUDSDK_PYTHON=python3 else # This won't work because it wasn't found above, but at this point this # is our best guess for the error message. CLOUDSDK_PYTHON=python fi fi # $PYTHONHOME can interfere with gcloud. Users should use # CLOUDSDK_PYTHON to configure which python gcloud uses. unset PYTHONHOME # if CLOUDSDK_PYTHON_SITEPACKAGES and VIRTUAL_ENV are empty case :$CLOUDSDK_PYTHON_SITEPACKAGES:$VIRTUAL_ENV: in :::) # add -S to CLOUDSDK_PYTHON_ARGS if not already there case " $CLOUDSDK_PYTHON_ARGS " in *" -S "*) ;; " ") CLOUDSDK_PYTHON_ARGS="-S" ;; *) CLOUDSDK_PYTHON_ARGS="$CLOUDSDK_PYTHON_ARGS -S" ;; esac unset CLOUDSDK_PYTHON_SITEPACKAGES ;; *) # remove -S from CLOUDSDK_PYTHON_ARGS if already there while :; do case " $CLOUDSDK_PYTHON_ARGS " in *" -S "*) CLOUDSDK_PYTHON_ARGS=${CLOUDSDK_PYTHON_ARGS%%-S*}' '${CLOUDSDK_PYTHON_ARGS#*-S} ;; *) break ;; esac done # if CLOUDSDK_PYTHON_SITEPACKAGES is empty [ -z "$CLOUDSDK_PYTHON_SITEPACKAGES" ] && CLOUDSDK_PYTHON_SITEPACKAGES=1 export CLOUDSDK_PYTHON_SITEPACKAGES ;; esac export CLOUDSDK_ROOT_DIR CLOUDSDK_PYTHON_ARGS # "$CLOUDSDK_PYTHON" $CLOUDSDK_PYTHON_ARGS "${CLOUDSDK_ROOT_DIR}/bin/bootstrapping/gsutil.py" "$@"