X-Git-Url: http://club.cc.cmu.edu/~cmccabe/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=dssh;h=9799ec0c3f9153cec8e14371f9445d19934281b9;hb=37227cd97b103c102365830ef122f08013daf60a;hp=c67976eb10ccda6b0427e854d3ac7c4323703a8b;hpb=94e79ad8c88e8f089c828b358e568cd39894c4de;p=cmccabe-bin diff --git a/dssh b/dssh index c67976e..9799ec0 100755 --- a/dssh +++ b/dssh @@ -9,7 +9,70 @@ die() { exit 1 } -CONTAINER=${1} -[ "x${CONTAINER}" == "x" ] && die "You must supply a container name as the first argument." -shift -docker exec -it "${CONTAINER}" bash "${@}" +usage() { + cat </dev/null || die "docker must be on the PATH." + +if [ "x${DOCKER_IMAGE_NAME}" == "x" ]; then + if [ "x${DOCKER_IMAGE_ID}" == "x" ]; then + usage + exit 1 + fi +else + if [ "x${DOCKER_IMAGE_ID}" == "x" ]; then + : + else + echo "You must not supply both an ID and a name." + exit 1 + fi + DOCKER_IMAGE_ID=$(docker ps -f name=${DOCKER_IMAGE_NAME} -q) + [ "x${DOCKER_IMAGE_ID}" == "x" ] && \ + die "failed to find a docker image named ${DOCKER_IMAGE_NAME}" +fi + +if [ ${ALLOCATE_TTY} == 1 ]; then + docker exec -it "${DOCKER_IMAGE_ID}" "${@}" ${RUN_COMMAND} +else + docker exec -i "${DOCKER_IMAGE_ID}" "${@}" ${RUN_COMMAND} & + wait +fi