Ajout d'un premier script de bash complétion
This commit is contained in:
parent
9857aae8f7
commit
2caa9f974b
2 changed files with 98 additions and 0 deletions
|
@ -273,6 +273,11 @@ def show_roles():
|
|||
if role.endswith('-w'): continue
|
||||
print " * " + role
|
||||
|
||||
def show_servers():
|
||||
print """Liste des serveurs disponibles"""
|
||||
for server in config.servers.keys():
|
||||
print " * " + server
|
||||
|
||||
old_clipboard = None
|
||||
def saveclipboard(restore=False):
|
||||
global old_clipboard
|
||||
|
@ -472,6 +477,9 @@ if __name__ == "__main__":
|
|||
action_grp.add_argument('--list-roles',action='store_const',dest='action',
|
||||
default=show_file,const=show_roles,
|
||||
help="Lister les rôles des gens")
|
||||
action_grp.add_argument('--list-servers',action='store_const',dest='action',
|
||||
default=show_file,const=show_servers,
|
||||
help="Lister les rôles serveurs")
|
||||
action_grp.add_argument('--recrypt-role',action='store_const',dest='action',
|
||||
default=show_file,const=update_role,
|
||||
help="Met à jour (reencode les roles)")
|
||||
|
|
90
cranspasswords_bash_completion
Normal file
90
cranspasswords_bash_completion
Normal file
|
@ -0,0 +1,90 @@
|
|||
# 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
|
||||
server=$last;
|
||||
fi
|
||||
else
|
||||
server="default";
|
||||
fi
|
||||
|
||||
# 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
|
Loading…
Add table
Add a link
Reference in a new issue