drun changes
This commit is contained in:
parent
4a1bfe174a
commit
827cb9c472
75
bin/drun
75
bin/drun
@ -3,28 +3,83 @@ ENV_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/.." &> /dev/null && pwd )
|
|||||||
source $ENV_DIR/bin/denv_msg
|
source $ENV_DIR/bin/denv_msg
|
||||||
|
|
||||||
drun() {
|
drun() {
|
||||||
if [ $# -lt 2 ]; then
|
if [ $# -lt 1 ]; then
|
||||||
denv_error_msg "Verwendung: drun [system] <run in docker container>"
|
denv_error_msg "Verwendung: drun [system] <docker-compose command>"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local CONTAINER_NAME="$1"
|
local SYSTEMS_CONFIG="$ENV_DIR/.systems"
|
||||||
shift # Das erste Argument entfernen
|
|
||||||
local COMMAND="$@"
|
|
||||||
local CONTAINER_ID=$(docker ps -qf "name=$CONTAINER_NAME-app")
|
|
||||||
|
|
||||||
if [ -z "$CONTAINER_ID" ]; then
|
SYSTEM_IDENTIFIER="$1"
|
||||||
denv_error_msg "Container '$CONTAINER_NAME' wurde nicht gefunden."
|
SYSTEM_PATH=$(grep "^$SYSTEM_IDENTIFIER" "$SYSTEMS_CONFIG" | cut -d' ' -f2)
|
||||||
|
|
||||||
|
if [ -z "$SYSTEM_PATH" ]; then # First Parameter is not a valid system identifier
|
||||||
|
SYSTEMS_DIRECTORY=$(realpath "$ENV_DIR/systems")
|
||||||
|
CURRENT_DIRECTORY=$(realpath $(pwd))
|
||||||
|
|
||||||
|
# We currently are in a subdirectory of dev-env/systems
|
||||||
|
if [[ "$CURRENT_DIRECTORY" == "$SYSTEMS_DIRECTORY"* ]]; then
|
||||||
|
ASSUMED_SYSTEM_PATH=$(realpath --relative-to="$SYSTEMS_DIRECTORY" "$CURRENT_DIRECTORY")
|
||||||
|
SYSTEM_PATH=$(grep "$ASSUMED_SYSTEM_PATH" "$SYSTEMS_CONFIG" | cut -d' ' -f2)
|
||||||
|
|
||||||
|
if [ -z "$SYSTEM_PATH" ]; then # You are NOT in a configured system directory (though in a subdirectory of dev-env/systems).
|
||||||
|
denv_error_msg "$CURRENT_DIRECTORY is not a configured dev-env system path.\nPlease register the system in $ENV_DIR/.systems, navigate to a registered system, or provide a system identifer as the first parameter of drun."
|
||||||
|
return 1
|
||||||
|
else # You are in a configured system directory
|
||||||
|
SYSTEM_IDENTIFIER=$(grep "$ASSUMED_SYSTEM_PATH" "$SYSTEMS_CONFIG" | cut -d' ' -f1)
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
denv_error_msg "$CURRENT_DIRECTORY is not a subdirectory of $ENV_DIR/systems.\nPlease navigate to a configured system, or provide a system identifer as the first parameter of drun."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
else # First Parameter is a valid system identifier
|
||||||
|
shift # Remove first Parameter
|
||||||
|
fi
|
||||||
|
|
||||||
|
SYSTEM_PATH="$ENV_DIR/systems/$SYSTEM_PATH"
|
||||||
|
SYSTEM_ENV_FILE="$SYSTEM_PATH/.env"
|
||||||
|
DOCKER_EXEC_COMMAND="$@"
|
||||||
|
DOCKER_COMPOSE_FILE="$SYSTEM_PATH/docker/docker-compose.yml"
|
||||||
|
|
||||||
|
# Set .env variables if a file exist
|
||||||
|
if [[ ! -f "$DOCKER_COMPOSE_FILE" ]]; then
|
||||||
|
denv_error_msg "$DOCKER_COMPOSE_FILE was not found. Have you run init yet?"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
denv_info_msg "System: $SYSTEM_IDENTIFIER"
|
||||||
|
denv_info_msg "Command: $DOCKER_EXEC_COMMAND"
|
||||||
|
|
||||||
|
if [[ -f "$SYSTEM_ENV_FILE" ]] ; then
|
||||||
|
export $(grep -v '^#' "$SYSTEM_ENV_FILE" | xargs)
|
||||||
|
fi
|
||||||
|
|
||||||
|
APP_CONTAINER=$(docker compose -f "$DOCKER_COMPOSE_FILE" config --services | grep 'app')
|
||||||
|
|
||||||
|
if [[ -z "$APP_CONTAINER" ]] ; then
|
||||||
|
denv_error_msg "App Container not found in '$DOCKER_COMPOSE_FILE'"
|
||||||
|
else
|
||||||
|
denv_info_msg "App Container: '$APP_CONTAINER'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [[ -t 0 && -t 1 ]]; then
|
if [[ -t 0 && -t 1 ]]; then
|
||||||
docker exec -it "$CONTAINER_ID" $COMMAND
|
denv_echo_msg "docker compose -it"
|
||||||
|
docker compose -f "$DOCKER_COMPOSE_FILE" exec -it $APP_CONTAINER $DOCKER_EXEC_COMMAND
|
||||||
else
|
else
|
||||||
docker exec "$CONTAINER_ID" $COMMAND
|
denv_echo_msg "docker compose"
|
||||||
|
docker compose -f "$DOCKER_COMPOSE_FILE" exec $APP_CONTAINER $DOCKER_EXEC_COMMAND
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Unset .env variables if a file exist
|
||||||
|
if [[ -f "$SYSTEM_ENV_FILE" ]] ; then
|
||||||
|
unset $(grep -v '^#' "$SYSTEM_ENV_FILE" | sed -E 's/(.*)=.*/\1/' | xargs)
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_drun_completion() {
|
_drun_completion() {
|
||||||
local cur prev opts
|
local cur prev opts
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user