# bash completion for cpan2dist -*- shell-script -*- _cpan2dist() { local cur prev words cword _init_completion || return case $prev in --format) # should remove ":" from COMP_WORDBREAKS, but doesn't work (?) COMPREPLY=($(compgen -W '$(perl -MCPANPLUS::Dist -e \ "print map { \"\$_\n\" } CPANPLUS::Dist->dist_types")' \ -- "$cur")) return ;; --banlist | --ignorelist | --modulelist | --logfile) _filedir return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) else local cpandirs=("$HOME/.cpanplus/" "$HOME/.cpan/source/modules/") local packagelist for dir in "${cpandirs[@]}"; do [[ -d $dir && -r "$dir/02packages.details.txt.gz" ]] && packagelist="$dir/02packages.details.txt.gz" done [[ -v packagelist ]] && COMPREPLY=($(zgrep "^${cur//-/::}" \ $packagelist 2>/dev/null | awk '{print $1}' | command sed -e 's/::/-/g')) fi } && complete -F _cpan2dist -o default cpan2dist # ex: filetype=sh