#compdef cranspasswords _cranspasswords(){ local cmd if (( CURRENT > 2 )); then END=$(( CURRENT - 1 )) cmd=$words[$END] case $cmd in --server) 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; ;; --view | --edit) 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" compadd $i; done; else liste_fichiers=($(cat /tmp/$fname)) for i in $liste_fichiers; do _wanted files expl "file names" compadd $i; done; fi; ;; --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" compadd $i; done; else liste_fichiers=($(cat /tmp/$fname)) for i in $liste_fichiers; do _wanted roles expl "role names" compadd $i; done; fi; ;; *) _cranspasswords_args $@ ;; esac else _cranspasswords_args $@ fi } _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 "$@"