Estou escrevendo um script de shell com algumas variáveis que devem ser configuradas pelo usuário. Haverá um instalador para baixar e configurar o script, possivelmente fazendo uma série de perguntas. O script em questão é destinado a outros desenvolvedores.
Isso pode ser implementado de várias maneiras:
Use espaços reservados no próprio script e
sed
substitua-os durante a instalação (algo como isto: /programming/415677/how-to-replace-placeholders-in-a-text-file )Prós: todas as definições de variáveis estão contidas no script. É fácil fazer o download do script manualmente e configurar as variáveis para usuários que preferem um editor ao instalador.
Contras: É difícil reconfigurar as variáveis através do instalador, uma vez que elas estão no lugar. A menos que eu crie uma regexp mais complexa, propensa a erros.
Use um arquivo de configuração , basicamente outro script de shell com atribuições e use-o
source
para incluí-lo. (E provavelmente coloque-o~/.scriptname
? O script principal é copiado para/usr/local/bin
)Prós: É fácil reconfigurar o script. Poderia até adicionar um parâmetro para fazê-lo no script principal (provavelmente funcionaria também na primeira solução, mas editar um script por si só não parece uma boa ideia)
Contras: Agora, o script depende de dois arquivos e é necessário que o usuário execute o instalador para que o arquivo de configuração seja criado. Isso pode ser resolvido gerando automaticamente um arquivo de configuração, se não houver nenhum. Mas localizar um arquivo de configuração externo ainda será mais complicado para os usuários que desejam apenas baixar o script, editá-lo e concluir o processo.
Além disso, algumas opções sobre como a configuração deve ser gerenciada pelo usuário após a instalação:
Git como
$ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / web
Configuração interativa do $ myscript
Digite o nome do host do servidor: exemplo.org
Digite o caminho para o proxy no servidor: / home / johndoe / proxy
Digite o caminho para o diretório http no servidor: / home / johndoe / webgetopts com opções longas
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / web
Exemplo simples de configuração do $ myscript.org / home / johndoe / proxy / home / johndoe / web
Existem outras maneiras de fazer isso que você consideraria?
Alguma prática recomendada, algo elegante?