Como agrupar a conclusão do Bash com um programa e fazer com que ele funcione no shell atual?
-
26-09-2019 - |
Pergunta
Eu suei sobre a pergunta acima. A resposta que vou fornecer demorei um pouco, mas ainda parece irremediavelmente primitiva e hacky em comparação com o que se poderia fazer, foi a conclusão para ser redesenhada para ser menos estatal. Tenho quase medo de perguntar se há uma boa razão para que a lógica de conclusão parece estar completamente divorciada do programa para o qual está concluindo.
Solução
Eu escrevi uma biblioteca de linha de comando (pode ser visto no tronco de Scala) que permite que você vira uma opção para ter uma opção "--bash". Se você correr
./program --bash
Ele calcula o arquivo de conclusão, grava -o em um tempfile e ecos
. /path/to/temp/file
para o console. O resultado é que você pode usar backticks como assim:
`./program --bash`
E você terá a conclusão para o "programa" no shell atual, pois ele obterá o TempFile.
Para um exemplo concreto: confira o tronco do Scala e execute o teste/parestre.