À medida que adiciono meus scripts cada vez mais aos arquivos composer.json
, seria útil ter o preenchimento automático para o comando composer
no bash
. Minha pergunta no Twitter não deu uma solução imediata e, como eu já estava fazendo algo semelhante para Phing
, arregacei as mangas e escrevi minha solução.
Começamos criando um novo arquivo de conclusão do bash chamado composer
no diretório bash_completion.d
(o arquivo precisa executar direitos). Esse diretório geralmente está localizado em /etc/bash_completion.d/
, mas no OS X usando o Homebrew, ele está localizado em /usr/local/etc/bash_completion.d/
(assumindo que você já instalou o brew install bash-complete
).
Aqui está o arquivo:
(Observe que __ltrim_colon_completions
é suportado apenas nas versões recentes do bash-complete
, portanto, pode ser necessário remover esta linha.)
Para obter uma lista de comandos para o compositor, criamos uma lista de palavras para a opção -W para compgen
executando o composer --no-ansi
e, em seguida, usamos o AWK para excluir tudo que não é um comando. Também criamos uma lista de argumentos de sinalização separada quando o usuário pressiona a tecla Tab depois que o hífen é inserido.
Ao executar o composer {cmd} -h --no-ansi
, preenchemos automaticamente os sinalizadores para qualquer subcomando e, usando tr
e grep
, restringimos a lista a apenas palavras que começam com um hífen.
Agora, pressionando Tab após o compositor, o bash concluirá automaticamente os comandos do compositor e os scripts do usuário!

Como você pode ver neste exemplo, além dos comandos internos, como dump-autoload
e show
, meus próprios scripts são exibidos, incluindo apiary-fetch
e outros.
Isso é muito útil quando a memória me falha!