-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.functions.sh
executable file
·103 lines (92 loc) · 3.81 KB
/
.functions.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/env sh
# source: https://medium.com/@calbertts/docker-and-fuzzy-finder-fzf-4c6416f5e0b5#.8y70iv8nx
runc() {
export FZF_DEFAULT_OPTS='--height 90% --reverse --border'
local image=$(docker images --format '{{.Repository}}:{{.Tag}}' | fzf-tmux --reverse --multi)
if [[ $image != '' ]]; then
echo -e "\n \033[1mDocker image:\033[0m" $image
read -e -p $' \e[1mOptions: \e[0m' -i "-it --rm" options
printf " \033[1mChoose the command: \033[0m"
local cmd=$(echo -e "/bin/bash\nsh" | fzf-tmux --reverse --multi)
if [[ $cmd == '' ]]; then
read -e -p $' \e[1mCustom command: \e[0m' cmd
fi
echo -e " \033[1mCommand: \033[0m" $cmd
export FZF_DEFAULT_COMMAND='find ./ -type d -maxdepth 1 -exec basename {} \;'
printf " \033[1mChoose the volume: \033[0m"
local volume=$(fzf-tmux --reverse --multi)
local curDir=${PWD##*/}
if [[ $volume == '.' ]]; then
echo -e " \033[1mVolume: \033[0m" $volume
volume="`pwd`:/$curDir -w /$curDir"
else
echo -e " \033[1mVolume: \033[0m" $volume
volume="`pwd`/$volume:/$volume -w /$volume"
fi
export FZF_DEFAULT_COMMAND=""
export FZF_DEFAULT_OPTS=""
history -s runc
history -s docker run $options -v $volume $image $cmd
echo ''
docker run $options -v $volume $image $cmd
fi
}
runinc() {
export FZF_DEFAULT_OPTS='--height 90% --reverse --border'
local container=$(docker ps --format '{{.Names}} => {{.Image}}' | fzf-tmux --reverse --multi | awk -F '\\=>' '{print $1}')
if [[ $container != '' ]]; then
echo -e "\n \033[1mDocker container:\033[0m" $container
read -e -p $' \e[1mOptions: \e[0m' -i "-it" options
if [[ $@ == '' ]]; then
read -e -p $' \e[1mCommand: \e[0m' cmd
else
cmd="$@"
fi
echo ''
history -s runinc "$@"
history -s docker exec $options $container $cmd
docker exec $options $container $cmd
echo ''
fi
export FZF_DEFAULT_OPTS=""
}
# Stops and/or removes a docker container
stopc() {
export FZF_DEFAULT_OPTS='--height 90% --reverse --border'
local container=$(docker ps --format '{{.Names}} => {{.Image}}' | fzf-tmux --reverse --multi | awk -F '\\=>' '{print $1}')
if [[ $container != '' ]]; then
echo -e "\n \033[1mDocker container:\033[0m" $container
printf " \033[1mRemove?: \033[0m"
local cmd=$(echo -e "No\nYes" | fzf-tmux --reverse --multi)
if [[ $cmd != '' ]]; then
if [[ $cmd == 'No' ]]; then
echo -e "\n Stopping $container ...\n"
history -s stopc
history -s docker stop $container
docker stop $container > /dev/null
else
echo -e "\n Stopping $container ..."
history -s stopc
history -s docker stop $container
docker stop $container > /dev/null
echo -e " Removing $container ...\n"
history -s stopc
history -s docker rm $container
docker rm $container > /dev/null
fi
fi
fi
export FZF_DEFAULT_OPTS=""
}
showipc() {
export FZF_DEFAULT_OPTS='--height 90% --reverse --border'
local container=$(docker ps -a --format '{{.Names}} => {{.Image}}' | fzf-tmux --reverse --multi | awk -F '\\=>' '{print $1}')
if [[ $container != '' ]]; then
local network=$(docker inspect $container -f '{{.NetworkSettings.Networks}}' | awk -F 'map\\[|:' '{print $2}')
echo -e "\n \033[1mDocker container:\033[0m" $container
history -s showipc
history -s docker inspect -f "{{.NetworkSettings.Networks.${network}.IPAddress}}" $container
echo -e " \033[1mNetwork:\033[0m" $network
echo -e " \033[1mIP Address:\033[0m" $(docker inspect -f "{{.NetworkSettings.Networks.${network}.IPAddress}}" $container) "\n"
fi
}