Para quem não conhece o Symfony ele é um framework que utiliza a metodologia MVC para facilitar e organizar o desenvolvimento em PHP. Agora que já foram apresentados e depois que hoje descobri os poderes ocultos do bash, resolvi mostrar como fazer o bash auto-completar as opções de comando do symfony. Isso pode ser expandido para qualquer outro comando , se for o caso.

Bem, para verificar quais as opções de comando do symfony basta que você faça :

bash> /<caminhoDoSymfony>/symfony

Ele irá mostrar algo como :

available pake tasks:
clear-cache                > clear cached information
clear-controllers          > clear controllers
disable                    > disables an application in a given environment
downgrade                  > downgrade to a previous symfony release
enable                     > enables an application in a given environment
fix-perms                  > fix directories permissions

Bem, como explicado em um artigo anterior, o bash possui um comando chamado complete que você pode utilizar para que ele faça auto-complementação de qualquer coisa para você. No caso o que faremos é dizer para ele que toda vez que alguém digitar no bash o comando symfony ele deve mostrar como opções tais e tais palavras. Entenderam ? Ou seja, o complete não é a esperteza em pessoa de analizar o comando e saber quais são as opções e tal. Na verdade o que fazemos é um truque. Dizemos quais palavras que devem aparecer e pronto. Neste caso, ficaria assim :

complete -W  “clear-cache  clear-controllers disable (…)”  symfony

O que estamos indicando para o comando  com o opção -W são as opções do comando symfony.

Mas para não termos que digitar tudo isso, podemos utilizar o bash mais uma vez para fazer todo o serviço, fazendo :

complete -W   “`symfony | grep ‘>’ | awk ‘{ORS=” “;print $1}’`”   symfony

Pronto, isso irá pegar diretamente do comando symfony todas as opções e passar para o comando complete.

Para ficar automático tudo isso, vamos colocar, como root, no arquivo /etc/bash.bashrc as seguintes linhas:

export SYMFONYBIN=/home/diego/_projetos/symfony/data/bin
export PATH=$PATH:$SYMFONYBIN
complete -W “`symfony | grep ‘>’ | awk ‘{ORS=” “;print $1}’`” symfony

Onde a variável SYMFONYBIN que criei (poderia ser qualquer nome) serve para apontar para o diretório bin da instalação do symfony, ou seja, onde o comando está localizado.  Em seguida setamos o PATH para que o bash encontre o comando symfony e em seguida usamos o complete. Atenção: Defina corretamente a variável SYMFONYBIN de acordo com a sua instalação!

Pronto, agora para usar o symfony e ter as opções dele, basta digitar symfony e apertar o TAB várias vezes.

Espero que tenham gostado.