121 lines
3.7 KiB
Text
121 lines
3.7 KiB
Text
#compdef cranspasswords
|
|
# Fichier de zsh complétion pour cranspasswords
|
|
|
|
_cranspasswords(){
|
|
local cmd
|
|
if (( CURRENT > 2 )); then
|
|
END=$(( CURRENT - 1 ))
|
|
cmd=$words[$END]
|
|
case $cmd in
|
|
--server)
|
|
_cranspasswords_servers
|
|
;;
|
|
--view | --edit)
|
|
_cranspasswords_files
|
|
;;
|
|
--roles)
|
|
_cranspasswords_roles
|
|
;;
|
|
*)
|
|
_cranspasswords_args
|
|
;;
|
|
esac
|
|
else
|
|
if [[ "$words[2]"* == "-"* ]]; then
|
|
_cranspasswords_args
|
|
else
|
|
_cranspasswords_files
|
|
fi;
|
|
fi
|
|
}
|
|
|
|
_cranspasswords_files(){
|
|
pos=$words[(i)--server]
|
|
posa=$(( pos + 1))
|
|
|
|
if (( posa < $#words )); then
|
|
fname="cpw_$words[$posa]_files"
|
|
server=$words[$posa]
|
|
else
|
|
fname="cpw_default_files"
|
|
server="default"
|
|
fi;
|
|
|
|
result=$(find /tmp -mmin -1 -name $fname 2> /dev/null | wc -l)
|
|
if (( result < 1 )); then
|
|
liste_fichiers=($(cranspasswords --server $server --list 2>/dev/null | tail -n +2 | head -n -1 | awk '{print $2}' | tr '\n' ' '))
|
|
echo $liste_fichiers > /tmp/$fname
|
|
for i in $liste_fichiers; do
|
|
_wanted files expl "file names on ${server}" compadd $i;
|
|
done;
|
|
else
|
|
liste_fichiers=($(cat /tmp/$fname))
|
|
for i in $liste_fichiers; do
|
|
_wanted files expl "file names on ${server}" compadd $i;
|
|
done;
|
|
fi;
|
|
}
|
|
|
|
_cranspasswords_roles(){
|
|
pos=$words[(i)--server]
|
|
posa=$(( pos + 1))
|
|
|
|
if (( posa < $#words )); then
|
|
fname="cpw_$words[$posa]_roles"
|
|
server=$words[$posa]
|
|
else
|
|
fname="cpw_default_roles"
|
|
server="default"
|
|
fi;
|
|
|
|
result=$(find /tmp -mmin -1 -name $fname 2> /dev/null | wc -l)
|
|
if (( result < 1 )); then
|
|
liste_fichiers=($(cranspasswords --server $server --list-roles 2>/dev/null | tail -n +2 | awk '{print $2}' | tr '\n' ' '))
|
|
echo $liste_fichiers > /tmp/$fname
|
|
for i in $liste_fichiers; do
|
|
_wanted roles expl "role names on ${server}" compadd $i;
|
|
done;
|
|
else
|
|
liste_fichiers=($(cat /tmp/$fname))
|
|
for i in $liste_fichiers; do
|
|
_wanted roles expl "role names on ${server}" compadd $i;
|
|
done;
|
|
fi;
|
|
}
|
|
|
|
_cranspasswords_servers(){
|
|
liste_serveurs=($(cranspasswords --list-servers 2> /dev/null | tail -n +2 | awk '{print $2}' | tr '\n' ' '))
|
|
for i in $liste_serveurs; do
|
|
_wanted server expl "server names" compadd $i;
|
|
done;
|
|
}
|
|
|
|
_cranspasswords_args(){
|
|
_arguments -s : \
|
|
"(-h --help)"{-h,--help}"[Obtenir de l'aide]" \
|
|
"(-v --verbose)"{-v,--verbose}"[Mode verbeux]"\
|
|
"(-f --force)"{-f,--force}"[Force]" \
|
|
"--server[Le serveur auquel se connecter]:server:" \
|
|
- list1 \
|
|
"--list-roles[Lister les rôles des gens]" \
|
|
- list2 \
|
|
"--list-servers[Lister les serveurs]" \
|
|
- list3 \
|
|
"(-l --list)"{-l,--list}"[Lister les fichiers présents sur le serveur]" \
|
|
- recrypt \
|
|
"--recrypt-role[Met à jour les rôles (rechiffre les fichiers)]" \
|
|
- edit \
|
|
"--edit[Créer ou modifier un fichier]:fichier:" \
|
|
"--roles[Liste les rôles]:roles:" \
|
|
- update \
|
|
"--check-keys[Vérifier les clefs]" \
|
|
"--update-keys[Mettre à jour les clefs]" \
|
|
- remove \
|
|
"--remove[Pour supprimer un fichier]" \
|
|
- view \
|
|
"--view[Pour lire un fichier]:fichier:" \
|
|
"(-c --clipboard)"{-c,--clipboard}"[Utilisation du presse-papier]" \
|
|
"--noclipboard[Ne pas utiliser le presse-papier]"
|
|
}
|
|
|
|
_cranspasswords "$@"
|