Aprimore o prompt do terminal para mostrar a versão atual do Ruby

Você já se viu em um terminal pensando: Qual versão do Ruby está ativa no momento? então talvez essa dica seja para você. Operar várias instalações Ruby nunca foi tão fácil graças a ferramentas como o elegante chruby , que permite visualizar o status de seus Rubies em um único comando. Mas não importa qual gerenciador Ruby você use , a consciência da configuração do seu ambiente é essencial para o desenvolvimento Ruby adequado! Eu me peguei verificando minha versão com tanta frequência que ela merecia alguma forma de automação.

Com um pouco de Bash, eu vim com uma solução divertida que qualquer um pode implementar (é apenas uma única linha de código!) Para preencher permanentemente o prompt do shell com essas informações, transformando algo assim:

cmptr:dir usr$

nisso:

[ruby 2.1.3p242] cmptr:dir usr$

A chave para ‘hackear’ seu prompt é definir a variável PS1, de preferência em algum perfil de shell que seja carregado automaticamente. Para produzir um prompt como o acima, use um valor de:

PS1="$(tput setaf 1)[$(ruby -v | grep -o 'ruby ([^( ]*)')]$(tput sgr0) h:W u$ "

Parece confuso, mas a explicação é simples. A primeira parte é um comando interpolado que muda a cor do texto para VERMELHO, um toque totalmente estético que você realmente não precisa. Escolhi o vermelho para Ruby, mas não importa.

$(tput setaf 1)

A maneira mais confiável de determinar sua versão do Ruby é rodar o próprio executável, que produzirá a versão e as informações de compilação quando passar o -vsinalizador. Eu canalizo isso greppara reduzi-lo ao essencial, usando o -osinalizador que o faz retornar apenas o que corresponde ao regex fornecido. Os suportes de fechamento são apenas estéticos aqui.

[$(ruby -v | grep -o 'ruby ([^( ]*)')]

Por último, mas não menos importante, redefinimos a cor, o que evita que o resto do prompt fique vermelho.

$(tput sgr0)