Утилита для рекурсивной обработки шаблонов текстовых файлов и заполнения заполнителей

Я ищу инструмент, который/может:

  • бесплатно
  • свободен от зависимостей (не требуется интерпретатор языка сценариев, ...)
  • желательно один бинарник
  • работать в Linux, опционально Windows
  • пройти через (под) структуру каталогов, обрабатывая все файлы с определенным расширением
  • замените все заполнители их значением, которое он извлекает из структурированного файла (один из json, xml, ключ = значение или CSV)
  • записать вывод в файл с таким же именем, но с удаленным расширением
  • желательно с открытым исходным кодом и активно поддерживается

Утилита может быть запущена следующим образом:

pt /var/opt/configfiles .template values.properties

Один шаблон может быть назван /var/opt/configfiles/fooapp/basic.conf.template со следующим содержимым:

Say hello to ${Name}

Value.properties может быть структурирован следующим образом:

Name=me
Age=18

После завершения работы инструмента у меня будет файл basic.conf.

Я знаю, что это можно сделать с помощью sed или awk. Я также мог бы написать это сам на golang, но оба подхода не то, что я ищу.

Я не знаю, существует ли готовый к использованию инструмент с вашими очень специфическими потребностями ... Но можете ли вы объяснить, почему эти подходы (несколько строк сценария) не то, что вы ищете?
@RoVo две основные причины: личные предпочтения и необязательное требование кроссплатформенной поддержки. В случае, если вы можете предложить сценарий: в зависимости от его реализации это может стать приемлемым решением.
Python будет кроссплатформенным. Windows 10 также может запускать скрипт bash при установке... Это может быть двухстрочный скрипт bash.
@RoVo компания, в которой я работаю, не имеет установленного Python в Linux, и я не хочу устанавливать ряд зависимостей. В Windows невозможно установить Python или аналог bash. Когда-то у нас был cygwin, но его пришлось удалить, а у нас только Windows 7.

Ответы (1)

Эта утилита, кажется, предлагает многое из того, что я ищу: https://github.com/gomatic/renderizer

Он не может сделать это самостоятельно:

  • обход каталогов
  • создавать выходные файлы с именем, исключающим расширение шаблона

Его файл со списком значений может быть только в формате yaml, но это не проблема.

Приемлемо и полезно принять свой собственный ответ. Это поможет другим в будущем.