Introdução

Parte 4

Configuração estruturada: mude o valor, não a pontuação

O editor de texto mostra o fonte; o comando de formato mostra o modelo de dados. As duas visões são úteis.

Por que uma ferramenta específica pode ser mais simples

Se em um arquivo grande você só precisa mudar application.debug, indicar o caminho lógico pode ser mais claro do que procurar a seção correta e cuidar de vírgulas, chaves ou separadores.

Um ritmo comum para vários formatos

Os módulos compartilham uma gramática parecida: abrir, ler uma chave, buscar, escrever com :, apagar, validar com -c ou serializar com dump. Depois, $ pode representar o arquivo ativo.

install md mf code ini json xml yml toml conf properties
md lil-playground/project/config
mf lil-playground/project/config/app.ini
cd lil-playground
ini project/config/app.ini
ini $ -w application.name : "lil playground"
ini $ application.name
ini $ -c

INI: seções e valores simples

INI agrupa pares chave/valor em seções. Caminhos com pontos alcançam diretamente um valor lógico sem percorrer o arquivo inteiro.

ini project/config/app.ini
ini $ -w application.debug : true
ini $ application.debug
ini $ -f "application*" -k

JSON: objetos, arrays e tipos

Neste exercício, abra project/config/app.json com code -n, cole a base {} mostrada abaixo, salve o arquivo e só então execute os comandos json. O editor estruturado precisa partir de um JSON válido.

JSON aparece em APIs, metadados e configuração de aplicativos. Alterações por caminho ajudam a evitar erros acidentais de vírgulas ou chaves; -c oferece validação explícita.

Comece o arquivo com isto
{}
code project/config/app.json -n
json project/config/app.json
json $ -w limits.history : 100
json $ limits.history
json $ -c

YAML, TOML, XML, conf e properties

YAML depende bastante de indentação, TOML de tabelas e tipos, XML de elementos e atributos, e conf/properties de famílias chave/valor. lil aproxima as operações cotidianas sem fingir que os formatos são iguais.

INIseções + chave/valorConfiguração compacta
JSONobjetos + arraysAPIs e metadados
YAMLindentação + mapeamentosConfiguração de implantação
TOMLtabelas + tiposFerramentas e apps
XMLelementos + atributosDocumentos estruturados
conf / propertiesfamílias chave/valorServidores e aplicativos

Valide; use `dump` quando precisar do fonte

-c valida o documento; dump devolve uma representação serializada. Escritas estruturadas podem normalizar formatação ou comentários. Se a forma exata do texto importar, use edit ou code.

json $ -c
json dump $
ini dump project/config/app.ini

Quando voltar ao `code`

Módulos de formato são ideais para valores pontuais, busca e validação. code é melhor quando comentários, formatação exata ou recursos avançados do formato importam.

code project/config/app.ini -ini
code project/config/app.json -json

Mudanças de configuração são ótimas para scripts

Uma sequência verificada de ajustes pode virar documentação executável. No próximo projeto, revise, troque os valores necessários e reproduza o mesmo ambiente.

Guarde isto como script

Salve como configure-app.lil. Ele aplica duas mudanças INI pontuais e valida o documento; não coloque segredos em scripts portáteis sem um fluxo protegido pensado para isso.

#lil
@install md mf ini json
md lil-playground/project/config
mf lil-playground/project/config/app.ini
cd lil-playground
ini project/config/app.ini
ini $ -w application.debug : true
ini $ -w application.name : "lil playground"
ini $ -c