-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathremote-completion
More file actions
145 lines (113 loc) · 3.34 KB
/
remote-completion
File metadata and controls
145 lines (113 loc) · 3.34 KB
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/usr/bin/env bash
# Time-stamp: <2020-09-02 11:32:06 Wednesday by ahei>
function getConfigFiles() {
local configs="/etc/remoterc"
[ -e "$configs" ] || configs=
[ -e $HOME/.remoterc ] && configs="$configs "$HOME/.remoterc
echo $configs
}
function getAllClusters() {
awk -F= '$ 1 {print $ 1}' $(getConfigFiles) | grep -E "^[[:space:]]*#" -v
}
function getAllSingleHost() {
awk 'NF == 1' $(getConfigFiles) | cut -d= -f1 | grep -E "^[[:space:]]*#" -v
}
function getPreOptionNum() {
local optionNum
for ((i = 1; i < COMP_CWORD; i++)); do
if [[ ${COMP_WORDS[i]} != -* ]]; then
echo "$optionNum"
return
fi
let optionNum++
done
echo "$optionNum"
}
function _remote() {
local cur prev opts
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
local opts="-l -n -V -q -g -N -c -t -p -H -f -F -s -o -C -W -L -v -h"
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
optionNum=$(getPreOptionNum)
if ((COMP_CWORD - optionNum == 1)); then
COMPREPLY=( $(compgen -W "$(getAllClusters)" -- ${cur}) )
return 0
fi
COMPREPLY=( $(compgen -A command -- "$cur") )
}
function _rgrep() {
local cur prev opts
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
local opts="-l -n -V -q -g -N -c -t -p -H -f -F -s -o -C -W -L -v -h"
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
optionNum=$(getPreOptionNum)
if ((COMP_CWORD - optionNum == 1)); then
COMPREPLY=( $(compgen -W "$(getAllClusters)" -- ${cur}) )
return 0
fi
COMPREPLY=( $(compgen -f -- ${cur}) )
}
function _rcp() {
local cur prev opts
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
local opts="-l -n -V -q -g -N -t -p -H -f -F -s -o -C -W -L -v -h"
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
optionNum=$(getPreOptionNum)
index=$((COMP_CWORD - optionNum))
if ((index == 1)); then
COMPREPLY=( $(compgen -W "$(getAllClusters)" -- ${cur}) )
return 0
fi
COMPREPLY=( $(compgen -f -- ${cur}) )
}
function _rssh() {
local cur prev opts
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
local opts="-l -o -v -h"
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
optionNum=$(getPreOptionNum)
index=$((COMP_CWORD - optionNum))
if ((index == 1)); then
COMPREPLY=( $(compgen -W "$(getAllSingleHost)" -- ${cur}) )
return 0
fi
}
function _rps() {
local cur prev opts
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
local opts="-o -v -h"
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
optionNum=$(getPreOptionNum)
index=$((COMP_CWORD - optionNum))
if ((index == 1)); then
COMPREPLY=( $(compgen -W "$(getAllClusters)" -- ${cur}) )
return 0
fi
COMPREPLY=( $(compgen -f -- ${cur}) )
}
complete -F _remote remote
complete -F _rgrep rgrep
complete -F _rcp rcp
complete -F _rssh rssh
complete -F _rps rps
complete -F _rps rls