#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-files[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 "$@"