Quando comecei a pesquisar o Gradle, fiquei pensando se seria possível autocompletar em tarefas como funciona, por exemplo, para subcomandos git (e eu realmente me acostumei com isso!). Isso realmente economiza muita digitação e aumenta seu fluxo no shell.
Como se viu, o bash (que estou usando felizmente) tem suporte para permitir que você escreva seus próprios scripts para autocompletar do bash e que o supracitado git autocompletar nada mais é do que tal script.
Para ter uma ideia de como as coisas funcionam, o primeiro lugar a olhar é
/etc/bash_completion
Este arquivo faz toda a configuração básica e é originado no seu arquivo .bashrc ou em /etc/bash.bashrc. Ele também origina automaticamente todos os arquivos em /etc/bash_completion.d/, para habilitar as extensões eays para novos comandos.
Para voltar ao meu objetivo (obter a conclusão de tarefas para o Gradle), parece que eu não era o único procurando algo assim e o script apropriado para colocar em /etc/bash_completion.d pode ser encontrado no Livro de receitas do Gradle :
#!/bin/bash
_gradle_complete()
{
local cur tasks
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
tasks='clean compile dists javadoc jar test war'
cur=`echo $cur | sed 's/\\//g'`
COMPREPLY=($(compgen -W "${tasks}" ${cur} | sed 's/\\//g') )
}
complete -F _gradle_complete -o filenames gradle
E isso é tudo que existe! Quando você abre seu próximo shell, o novo preenchimento estará ativo e você obterá a conclusão de todas as tarefas que colocou na variável de tarefas no script. Basta colocar suas tarefas mais comuns lá. Não é um preenchimento dinâmico baseado no arquivo de construção, mas ainda é muito útil e ajuda a aumentar o seu fluxo na linha de comando.
E se você perder a conclusão de algum outro comando, basta dar uma olhada nos scripts existentes, aprender e adotar!