dotfiles/bash/rofi/docker.sh

52 lines
1.6 KiB
Bash

#!/usr/bin/bash
#Set default terminal emulator
TERMINAL_APP=xfce4-terminal
CUSTOM_SCRIPTS_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)/custom"
function execInTerminal {
$TERMINAL_APP -H -e "$1"
}
function getExtraActions {
local custom_scripts=""
if [ -d "$CUSTOM_SCRIPTS_DIR" ]; then
for file in "$CUSTOM_SCRIPTS_DIR"/*; do
custom_scripts="$custom_scripts\n$(basename "$file")"
done
fi
echo "$custom_scripts"
}
selected_container=$(docker ps --format "table {{.Names}}\t{{.Image}}\t{{.ID}}" | sed '1d' | rofi -p "🥡 Running containers " -dmenu)
container_options_attach="Attach"
container_options_stop="Stop"
container_options_logs="Logs"
container_options_restart="Restart"
if [[ ! -z $selected_container ]]; then
container_id=$(echo "$selected_container" | awk '{ print $3}')
container_name=$(echo "$selected_container" | awk '{ print $1}')
selected_action=$(echo -e "$container_options_attach\n$container_options_logs\n$container_options_restart\n$container_options_stop$(getExtraActions)" | rofi -dmenu -selected-row 0)
case $selected_action in
"$container_options_attach")
execInTerminal "docker exec -it ${container_id} /bin/sh"
;;
"$container_options_restart")
msg=$(docker restart "$container_id")
rofi -e "Message from the docker: $msg"
;;
"$container_options_logs")
execInTerminal "docker logs -f ${container_id}"
;;
"$container_options_stop")
msg=$(docker stop "$container_id")
rofi -e "Message from the docker: $msg"
;;
*)
bash "$CUSTOM_SCRIPTS_DIR/$selected_action" "$container_name"
;;
esac
fi