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