50 lines
1.5 KiB
Bash
Executable File
50 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
drun() {
|
|
# Überprüfen, ob die richtige Anzahl Argumente übergeben wurden
|
|
if [ $# -lt 2 ]; then
|
|
echo "Verwendung: drun <system> <run in docker container>"
|
|
return 1
|
|
fi
|
|
|
|
# Container-Namen extrahieren
|
|
local CONTAINER_NAME="$1"
|
|
shift # Das erste Argument entfernen
|
|
|
|
# Den Rest der Argumente als Befehlszeichenfolge zusammenfügen
|
|
local COMMAND="$@"
|
|
|
|
# Container-ID mithilfe des Container-Namens finden
|
|
local CONTAINER_ID=$(docker ps -qf "name=$CONTAINER_NAME-app")
|
|
|
|
# Überprüfen, ob der Container gefunden wurde
|
|
if [ -z "$CONTAINER_ID" ]; then
|
|
echo "Container '$CONTAINER_NAME' wurde nicht gefunden."
|
|
return 1
|
|
fi
|
|
|
|
# Befehl im Container ausführen
|
|
docker exec -it "$CONTAINER_ID" $COMMAND
|
|
}
|
|
|
|
_drun_completion() {
|
|
local cur prev opts
|
|
COMPREPLY=() # Array, das die Vorschläge enthalten wird
|
|
cur="${COMP_WORDS[COMP_CWORD]}" # Das aktuelle Wort, das vervollständigt werden soll
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}" # Das vorherige Wort
|
|
|
|
# Hier definierst du die Optionen oder Argumente, die `drun` akzeptiert
|
|
opts="start stop restart status"
|
|
|
|
# Wenn die Optionen abhängig vom vorherigen Wort sind, kannst du hier Bedingungen hinzufügen
|
|
# Beispiel:
|
|
# if [[ ${prev} == "start" ]]; then
|
|
# opts="service1 service2 service3"
|
|
# fi
|
|
|
|
# Die verfügbaren Optionen auf das aktuelle Eingabewort filtern
|
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
|
return 0
|
|
}
|
|
|
|
complete -F _drun_completion drun |