ComposerのBashの完了

すべての良い一日。



Composerを使用するユーザー専用ですが、インストールするパッケージを選択する(必須)ときに、このパッケージのバージョンを入力する必要があるという事実に直面しました。 常にどこかで探すことはあまり便利ではありません。*を使用しても、すべてを正しくインストールできるとは限りません。



そこで、自動置換スクリプトを公開することにしました。

現時点では、パッケージ名の置換が必要であり、パッケージが既に置換されている場合、このパッケージのバージョンは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



としてシステムにインストールする必要があります。

個人的には、/ usr / local / binに置き、 sudo composer self-update



介して定期的に更新します。



誰かが改善のために何かを追加したい場合は、 Githubで尋ねます



以上です。

みんなありがとう!



All Articles