diff --git a/plugins/common/functions b/plugins/common/functions index 26e947b40..627172b89 100755 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -311,6 +311,22 @@ get_app_running_container_ids() { echo "$APP_RUNNING_CONTAINER_IDS" } +get_app_running_container_types() { + declare desc="return list of running container types for given app" + local APP=$1 CONTAINER_TYPES + verify_app_name "$APP" + + ! (is_deployed "$APP") && dokku_log_fail "App $APP has not been deployed" + + CONTAINER_TYPES="$(find "$DOKKU_ROOT/$APP" -maxdepth 1 -name "CONTAINER.*" -print0 | xargs -0)" + if [[ -n "$CONTAINER_TYPES" ]]; then + CONTAINER_TYPES="${CONTAINER_TYPES//$DOKKU_ROOT\/$APP\//}" + CONTAINER_TYPES="$(tr " " $'\n' <<< "$CONTAINER_TYPES" | awk -F. '{ print $2 }' | xargs)" + fi + + echo "$CONTAINER_TYPES" +} + get_cmd_from_procfile() { declare desc="parse cmd from app Procfile" local APP=$1; local PROC_TYPE=$2; local DOKKU_PROCFILE="$DOKKU_ROOT/$APP/DOKKU_PROCFILE" diff --git a/plugins/enter/subcommands/default b/plugins/enter/subcommands/default index ab6634142..3e5008359 100755 --- a/plugins/enter/subcommands/default +++ b/plugins/enter/subcommands/default @@ -7,13 +7,14 @@ enter_default_cmd() { local cmd="enter" local APP="$2"; local CONTAINER_TYPE="$3"; local IMAGE_TAG=$(get_running_image_tag "$APP"); local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") verify_app_name "$APP" + local AVAILABLE_CONTAINER_TYPES="$(get_app_running_container_types "$APP")" - [[ ! -n "$3" ]] && dokku_log_fail "No container id specified" + [[ ! -n "$3" ]] && dokku_log_warn "No container type specified." && dokku_log_fail "Available types for app ($APP): $AVAILABLE_CONTAINER_TYPES" if [[ "$3" == "--container-id" ]]; then - [[ ! -n "$4" ]] && dokku_log_fail "No container id specified" - local DOKKU_APP_CIDS=( $(get_app_container_ids "$APP") ) + [[ ! -n "$4" ]] && dokku_log_warn "No container id specified." && dokku_log_fail "Available ids for app ($APP): ${DOKKU_APP_CIDS[@]}" + printf -- '%s\n' "${DOKKU_APP_CIDS[@]}" | grep -q -e "^$4" || dokku_log_fail "Invalid container id for app" local ID=$(printf -- '%s\n' "${DOKKU_APP_CIDS[@]}" | grep -e "^$4") shift 4