blob: 8a62a6602257d4715363ebe6f82693421ff7e52f [file] [log] [blame]
# -*- mode: shell-script -*-
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This is a bash configuration script that will configure your shell environment
# in the same way that infra wrapper scripts like run.py and test.py do. That
# allows you to run unwrapped infra tool invocations directly from the shell
# prompt. To use it, run `source testenv.bashrc` from anywhere inside your
# gclient root (you must specify the correct path to testenv.bashrc).
unset _testenv_gclient_root
unset _testenv_ae_root
unset _testenv_append_to_path
unset _testenv_prepend_to_path
_testenv_gclient_root=$PWD
while [ ! -f "$_testenv_gclient_root/.gclient" ] || \
[ ! -d "$_testenv_gclient_root/google_appengine" ]; do
_testenv_gclient_root=${_testenv_gclient_root%/*}
if [ -z "$_testenv_gclient_root" ]; then
echo "ERROR: Couldn't find the root of your checkout" 1>&2
exit 1
fi
done
_testenv_ae_root="$_testenv_gclient_root"/google_appengine
function _testenv_append_to_path() {
for p in ${!1//:/ }; do
if [ "$p" == "$2" ]; then
echo "${!1}"
return 0
fi
done
if [ -z "${!1}" ]; then
echo "$2"
else
echo "${!1}:$2"
fi
return 0
}
function _testenv_prepend_to_path() {
for p in ${!1//:/ }; do
if [ "$p" == "$2" ]; then
echo "${!1}"
return 0
fi
done
if [ -z "${!1}" ]; then
echo "$2"
else
echo "$2:${!1}"
fi
return 0
}
export PATH=$(\
_testenv_prepend_to_path PATH "$_testenv_gclient_root/infra/ENV/bin")
export PYTHONPATH=$(_testenv_append_to_path PYTHONPATH \
"$_testenv_gclient_root/infra")
for p in $(cat <<EOF | PYTHONPATH="$_testenv_ae_root" python
import os, wrapper_util
p = wrapper_util.Paths('$_testenv_ae_root')
p = p.script_paths('dev_appserver.py') + p.v2_extra_paths
print ' '.join(p)
EOF
); do
export PYTHONPATH=$(_testenv_append_to_path PYTHONPATH "$p")
done
unset _testenv_gclient_root
unset _testenv_ae_root
unset _testenv_append_to_path
unset _testenv_prepend_to_path