#!/bin/sh # vi: ts=4 expandtab error() { echo "$@" 1>&2; } fail() { [ $# -eq 0 ] || error "$@"; exit 1; } list_environments() { local tox_d="$1" tox_ini="$2" prefix=" " envs=$(tox -c "$tox_ini" --listenvs) || return 1 ( cd "$tox_d" && for d in ${envs}; do [ -f "$d/bin/activate" ] && s="*" || s="" echo "${prefix}$d$s"; done ) } Usage() { local tox_d="$1" tox_ini="$2" cat <&2; exit 1; } [ "$1" = "-h" -o "$1" = "--help" ] && { Usage "$tox_d" "$tox_ini"; exit 0; } [ -d "$tox_d" ] || fail "$tox_d: not a dir. maybe run 'tox'?" [ -f "$tox_ini" ] || fail "$tox_ini: did not find tox.ini" if [ "$1" = "-l" -o "$1" = "--list" ]; then list_environments "$tox_d" "$tox_ini" exit fi nocreate="false" if [ "$1" = "--no-create" ]; then nocreate="true" shift fi env="$1" shift activate="$tox_d/$env/bin/activate" if [ ! -f "$activate" ]; then if $nocreate; then fail "tox env '$env' did not exist, and no-create specified" elif list_environments "$tox_d" "$tox_ini" | grep -q " $env$"; then error "attempting to create $env:" error " tox -c $tox_ini --recreate --notest -e $env" tox -c "$tox_ini" --recreate --notest -e "$env" || fail "failed creation of env $env" else error "$env: not a valid tox environment?" error "found tox_d=$tox_d" error "try one of:" list_environments "$tox_d" "$tox_ini" 1>&2 fail fi fi . "$activate" [ "$#" -gt 0 ] || set -- ${SHELL:-/bin/bash} debian_chroot="tox:$env" exec "$@"