Newer
Older
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
# Fonction de notre auto completion
contain(){
local i
for i in $2; do
if [[ "$i" = "$1" ]]; then
return 0
fi
done
return 1
}
if [[ "$EDITOR" = "" ]]; then
export EDITOR="nano";
fi
_cranspasswords(){
# declaration des variables locales
local argc first last prev cur cur_first_char opts_short opts role_dir pass_dir server server_list role_list pass_list timeout
role_dir="/tmp/cranspasswords-$USER-role/"
pass_dir="/tmp/cranspasswords-$USER-passwords/"
# Combien de temps on garde les réponses du serveur en cache (en minutes)
timeout=5
#COMPREPLY désigne la réponse à renvoyer pour la complétion actuelle
COMPREPLY=()
# argc : vaut le nombre d'argument actuel sur la ligne de commande
argc=${COMP_CWORD};
# cur : désigne la chaine de caractère actuelle pour le dernier mot de la ligne de commande
first="${COMP_WORDS[1]}"
last="${COMP_WORDS[$(($argc - 1 ))]}"
prev="${COMP_WORDS[$(($argc - 2 ))]}"
cur="${COMP_WORDS[argc]}"
cur_first_char=${cur:0:1}
opts_short="-h -v -c -f -l"
opts="--help --server --verbose --clipboard --noclipboard --force --edit --view --remove --list --check-keys --update-keys --list-roles --recrypt-roles --roles --list-servers"
mkdir -p -m 700 "$role_dir"
mkdir -p -m 700 "$pass_dir"
find "$role_dir" -type f -mmin +$timeout -exec rm -f {} \;
find "$pass_dir" -type f -mmin +$timeout -exec rm -f {} \;
# On détermine si on utilsie un serveur alternatif
if contain "--server" "${COMP_WORDS[*]}"; then
if [[ "$prev" = "--server" ]]; then

Valentin Samir
committed
_cranspasswords_server=$last;

Valentin Samir
committed
_cranspasswords_server="default";

Valentin Samir
committed
server=$_cranspasswords_server
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
# les options possibles pour notre auto-complétion
if [[ $cur_first_char = "-" ]]; then
COMPREPLY=( $(compgen -W "$opts" -- $cur ) )
return 0
fi
if [[ "$last" = "--server" ]]; then
server_list="`cranspasswords --list-servers | grep -- "*" | awk '{print $2}'`"
COMPREPLY=( $(compgen -W "$server_list" -- $cur ) )
return 0
fi
if [[ "$last" = "--roles" ]]; then
if [ ! -f "${role_dir}$server" ]; then
echo "`cranspasswords --server $server --list-roles | grep -- "*" | awk '{print $2}'`" > "${role_dir}$server"
fi
role_list="`cat "${role_dir}$server"`"
COMPREPLY=( $(compgen -W "$role_list" -- $cur ) )
return 0
fi
if true; then
if [ ! -f "${pass_dir}$server" ]; then
echo "`cranspasswords --server $server -l | grep "+" | awk '{print $2}'`" > "${pass_dir}$server"
fi
pass_list="`cat "${pass_dir}$server"`"
COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
return 0
fi
}
# On active l'auto-completion
complete -F _cranspasswords cranspasswords