секции + ключ/значениеКомпактные настройки приложений и серверовСтруктурированная конфигурация: меняйте значение, а не пунктуацию
Текстовый редактор показывает исходник. Форматная команда показывает модель данных. Умение переключаться между этими двумя взглядами экономит огромное количество лишней работы.
Почему специальный инструмент иногда проще текстового редактора
Представьте большой конфигурационный файл, где нужно изменить только application.debug. В обычном редакторе вы ищете секцию, проверяете нужное совпадение, следите за пунктуацией и сохраняете весь файл. В структурированной команде достаточно назвать логический путь.
Это не попытка заменить редактирование исходника. Это выбор инструмента по намерению. Если задача состоит в изменении значения — обращайтесь к значению.
Один рабочий ритм для нескольких форматов
Форматные модули намеренно имеют похожую грамматику: открыть файл, прочитать ключ, найти значение, записать через :, удалить ключ, проверить через -c или получить сериализованный исходник через dump. Освоив один формат, остальные уже не выглядят чужими.
Открытый структурированный файл становится активным. Затем $ может заменять его путь, поэтому серия операций над одним файлом остаётся короткой и читаемой.
install md mf code ini json xml yml toml conf propertiesmd lil-playground/project/configmf lil-playground/project/config/app.inicd lil-playgroundini project/config/app.iniini $ -w application.name : "lil playground"ini $ application.nameini $ -cINI: секции и простые значения
INI часто встречается в конфигурации благодаря простой структуре: секции группируют пары ключ/значение. В lil-terminal точечный путь позволяет обратиться к нужному значению, не прокручивая весь файл.
Используйте INI там, где этот формат уже выбран программой или проектом. Наличие удобной команды не означает, что один формат должен заменить все остальные.
ini project/config/app.iniini $ -w application.debug : trueini $ application.debugini $ -f "application*" -kJSON: объекты, массивы и типизированные значения
Для упражнения откройте project/config/app.json через {}, сохраните файл и только после этого запускайте команды
JSON хранит вложенные объекты и массивы и постоянно встречается в API, настройках приложений и метаданных. Его синтаксис строг, поэтому точечная правка по пути помогает не ошибиться в запятой или скобке.
Тип значения важен: число должно остаться числом, логическое значение — логическим, строка — строкой. После изменений -c выполняет явную проверку документа.
{}code project/config/app.json -njson project/config/app.jsonjson $ -w limits.history : 100json $ limits.historyjson $ -cYAML, TOML, XML, conf и properties
YAML строится вокруг отступов и часто используется в файлах развёртывания; TOML любит явные таблицы и типы; XML хранит элементы и атрибуты; семейства .conf и .properties часто встречаются в настройках серверов и приложений. Задачи похожи, но синтаксические традиции разные.
lil-terminal даёт единый повседневный интерфейс там, где структуру можно представить без потерь, но не делает вид, что все форматы одинаковы. Сложные конструкции YAML, необычный XML или специфический синтаксис конкретной программы иногда правильнее редактировать как исходный текст через
объекты + массивыAPI, метаданные и конфигурация приложенийотступы + отображенияРазвёртывание и конфигурация, которую часто читают вручнуютаблицы + типыНастройки инструментов и приложенийэлементы + атрибутыСтруктурированные документы и интеграциисемейства ключ/значениеНастройки серверов и приложенийПроверяйте модель; `dump` используйте, когда нужен исходник
-c просит модуль проверить текущий документ. dump возвращает сериализованное представление исходника. Это разные вопросы: «валиден ли документ для обработчика?» и «какой текст получится из этих данных?».
После структурированной записи могут нормализоваться отступы, порядок или комментарии, потому что данные разбираются и сериализуются заново. Если точное оформление исходного файла является частью требования, используйте
json $ -cjson dump $ini dump project/config/app.iniПонимайте, когда пора вернуться в `code`
Форматный модуль удобен для точечных значений, поиска и проверки.
Хорошая привычка — переключаться без идеологии: структура, когда важен смысл; исходник, когда важен именно исходник.
code project/config/app.ini -inicode project/config/app.json -jsonИзменения конфигурации идеально подходят для сценариев
Проверенную последовательность настроек стоит сохранить как сценарий. Вместо заметки «не забыть включить режим отладки и поменять имя» оставьте команды, которые выполняют изменения и сразу проверяют результат.
Такой сценарий становится исполняемой документацией. На следующем проекте его можно прочитать, заменить нужные значения и воспроизвести знакомую среду без догадок.
Сохраните это как сценарий
Сохраните блок как configure-app.lil. Он делает две точечные INI-правки и проверяет документ. Секреты не кладите в переносимые сценарии, если для них специально не спроектирован защищённый процесс.
#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