Utilidad para procesar recursivamente plantillas de archivos de texto y rellenar marcadores de posición

Busco una herramienta que sea / pueda:

  • gratis
  • libre de dependencias (no se necesita un intérprete de lenguaje de secuencias de comandos, ...)
  • preferiblemente un solo binario
  • ejecutar en Linux, opcionalmente Windows
  • atravesar una estructura de (sub)directorio, procesando todos los archivos con una cierta extensión
  • reemplace todos los marcadores de posición con su valor que recupera de un archivo estructurado (uno de json, xml, key=value o CSV)
  • escribir la salida en un archivo con un nombre de archivo idéntico, pero con la extensión eliminada
  • preferiblemente de código abierto y mantenido activamente

La utilidad podría ejecutarse así:

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

Una plantilla podría llamarse /var/opt/configfiles/fooapp/basic.conf.template con este contenido:

Say hello to ${Name}

Value.properties podría estructurarse así:

Name=me
Age=18

Después de que la herramienta terminara, tendría un basic.conf.

Sé que esto se puede hacer usando sed o awk. También podría escribir esto yo mismo en golang, pero ambos enfoques no son lo que estoy buscando.

No sé si existe una herramienta lista para usar con sus necesidades muy específicas ... Pero, ¿puede explicar por qué estos enfoques (algunas líneas de secuencias de comandos) no son lo que está buscando?
@RoVo dos razones principales: preferencias personales y el requisito opcional de soporte multiplataforma. En caso de que pueda ofrecer un script: dependiendo de su implementación, esto podría convertirse en una solución aceptable
Python sería multiplataforma. Windows 10 también puede ejecutar el script bash cuando está instalado... Este puede ser un script bash de dos líneas.
@RoVo, la empresa en la que trabajo no tiene Python instalado en Linux y no quiero instalar varias dependencias. En Windows es impensable instalar Python o un bash equivalente. Una vez tuvimos cygwin, pero hubo que eliminarlo y, sin embargo, solo tenemos Windows 7

Respuestas (1)

Esta utilidad parece ofrecer mucho de lo que estoy buscando: https://github.com/gomatic/renderizer

No puede hacer esto por sí solo:

  • atravesar directorios
  • crear archivos de salida con un nombre que excluya la extensión de la plantilla

Su archivo de lista de valores solo puede ser yaml, pero esto no es un problema real

Es aceptable y útil aceptar su propia respuesta. Hacerlo ayudará a otros en el futuro.