Посвящается тем, кто использует Composer, но столкнулся с тем, что при выборе пакета для установки (require) нужно вписать версию этого пакета. Не очень удобно постоянно ее где-то искать, даже используя * не всегда удается все правильно установить.
Таким образом, я решил опубликовать скрипт автоподстановки.
На данный момент о него требуется подстановка имен пакетов, а в случае если пакет уже подставлен, то версию этого пакета, лишь для команды require.
Суть идеи была проста — подставить имя пакета, затем подставить его версию, а если предыдущее не имя пакета, значит это версия, тогда опять попытаться подобрать имя пакета.
Сам скрипт лежит обычно по пути (можно туда сделать симлинк, ну или кому как)
/usr/share/bash-completion/completions
Содержимое скрипта:
# Composer completion _composer() { local cur prev words cword _init_completion || return local special i for (( i=0; i < ${#words[@]}-1; i++ )); do if [[ ${words[i]} == @(require) ]]; then special=${words[i]} fi done if [[ -n $special ]]; then if [[ $prev != $special ]]; then # полагаем, что предыдущее это пакет и он существует, # тогда посмотрим его версии COMPREPLY=( $( composer show $prev 2>/dev/null | \ sed -r -e 's/\x1b\[[0-9]+m//g' | grep ^versions | \ sed -r -e 's/^versions : //' -e 's/, /\n/g' | grep "^$cur" | sort -u ) ) fi if [[ -z $COMPREPLY ]]; then # если то был не пакет, то подставляем пакет на основе текущего слова COMPREPLY=( $( composer show -a 2>/dev/null | \ grep -v '^No composer' | grep "^$cur" | sort -u ) ) fi return 0 fi # дополняемся ключами и командами if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W '-h -q -v -V -n -d \ --help --quiet --verbose --version --ansi --no-ansi \ --no-interaction --profile --working-dir' -- "$cur" ) ) else COMPREPLY=( $( compgen -W 'about archive config create-project \ depends diagnose dump-autoload dumpautoload \ help init install list require search \ self-update selfupdate show status update validate' -- "$cur" ) ) fi return 0 } && complete -F _composer composer # регистрируем обработчик для команды composer
Из минусов хочу отметить долгий отклик из-за того, что сам composer медленно читает свое хранилище.
Конечно, же необходимо чтобы Composer был установлен в системе как composer.
Лично, я сунул его в /usr/local/bin и периодически обновляю через sudo composer self-update.
Если у кого есть желание что-то добавить улучшить, то прошу на Github
На этом все.
Всем спасибо!
ссылка на оригинал статьи http://habrahabr.ru/post/176715/
Добавить комментарий