# Generador de `manifest.json` ## Descripción General El programa `genmanifest.dkl` tiene como objetivo generar automáticamente un archivo `manifest.json` a partir de los archivos `.manifest` encontrados en paquetes V12. El sistema recorre una ruta especificada por el usuario, localiza los archivos `.manifest` correspondientes a cada paquete y construye un único archivo `manifest.json` consolidado. --- # Nombre del Programa `genmanifest.dkl` --- # Parámetros de Entrada El programa recibe los siguientes argumentos: | Argumento | Tipo | Obligatorio | Descripción | |---|---|---|---| | `ruta` | string | Sí | Ruta inicial donde comenzará la búsqueda de archivos `.manifest`. | | `output` | string | Sí | Ruta completa donde se generará el archivo `manifest.json`. | | `recursive` | boolean | No | Indica si la búsqueda será recursiva. Valor por defecto: `true`. | --- # Funcionamiento ## Flujo General 1. El programa recibe la ruta base (`ruta`). 2. Se inicia la búsqueda de archivos `.manifest`. 3. Si `recursive=true`, la búsqueda se realiza en todos los subdirectorios. 4. Por cada archivo `.manifest` encontrado: - Se lee su contenido. - Se obtiene el identificador (`id`) del paquete. - Se extraen las propiedades necesarias. 5. Se construye un objeto JSON consolidado. 6. Finalmente se genera el archivo `manifest.json` en la ruta especificada por `output`. --- # Estructura Esperada del Archivo `.manifest` El programa espera que cada archivo `.manifest` contenga información similar a: ```json { "id": "inventario", "installable":["inventario"], "version": "1.0.67", "schema_ver": "1.0.10" } ``` --- # Estructura Generada del `manifest.json` El archivo generado tendrá una estructura similar a la siguiente: ```json { "inventario": { "id":"inventario", "installable":["inventario"], "version":"1.0.67", "schema_ver":"1.0.10" }, "dbext": { "id":"dbext", "installable":["dbext"], "version":"1.0.67", "schema_ver":"1.0.10" } } ``` --- # Ejemplo de Ejecución ## Ejemplo 1 — Búsqueda recursiva ```bash ./dkl genmanifest.dkl ruta="/packages/v12" output="/output" ``` Resultado: - Se buscarán todos los `.manifest` dentro de `/packages/v12` y subdirectorios. --- ## Ejemplo 2 — Búsqueda no recursiva ```bash genmanifest.dkl ruta="/packages/v12" output="/output" recursive=false ``` Resultado: - Solo se buscarán archivos `.manifest` en el directorio raíz especificado. --- # Consideraciones Técnicas - El archivo generado debe cumplir formato JSON válido. - Los IDs deben ser únicos dentro del `manifest.json`. - En caso de IDs duplicados, el último archivo procesado sobrescribirá el anterior. - La búsqueda debe filtrar únicamente archivos con extensión `.manifest`. --- # Resultado Final El programa produce un único archivo: ```text manifest.json ``` ``` Ejemplo: ./dkl genmanifest ruta="C:/folder/" output="/output" ```