Referencia de la CLI
Toma un config .tdc, genera y escribe el resultado en un archivo o en stdout — sin escribir código.
tdcv2 <input.tdc> [options]
tdcv2npm install -D tdcv2, pip install tdcv2 y cargo install tdcv2 dejan el comando
tdcv2 en su PATH desde el mismo paquete que lleva la biblioteca. Maven y NuGet no tienen
equivalente del bin de npm, así que en Java y C# la línea de comandos es un segundo
artefacto; Instalación tiene la pestaña de cada
uno. Un alias hace que todos los comandos de esta página se lean igual. Todo lo de abajo
funciona igual en cualquier implementación.
Además de generar, la CLI tiene tdcv2 init y tdcv2 pack para la configuración inicial
y los datos — vea Instalar packs — más tdcv2 check
(abajo) y tdcv2 format (abajo).
Opciones
| Opción | Qué hace |
|---|---|
-o, --output <path> | Escribe en un archivo. Sin ella, imprime en stdout |
--seed <seed> | Sobrescribe el seed de <env> |
--count <n> | Sobrescribe el count de <env> |
--locale <loc> | Sobrescribe el locale (por omisión en) |
--now <date> | Fija el reloj que leen today, now y b_day |
--data-path <dir> | Agrega una carpeta de datos para @data/… (repetible) |
--jobs <n> | Cantidad de hilos de trabajo (por omisión lo decide TDC) |
--mode <memory|disk> | Motor: disk (por omisión) o memory |
--engine <1|2|3> | Forzar un motor específico (avanzado) |
--disk | Atajo de --mode disk — ya es el valor por omisión |
--stream | Alias heredado de --engine 2 |
-h, --help | Muestra la ayuda |
-v, --version | Muestra la versión |
Las opciones largas también aceptan =: tdcv2 demo.tdc --output=out.csv --count=100.
En los ejemplos de abajo se usa este demo.tdc:
<tdc>
<env count="10" seed="demo" local="en">
<sequence name="Id"><gen type="increment" value="1"/></sequence>
<sequence name="City"><gen type="text" value="Moscow,Berlin,Paris" order="sequential"/></sequence>
<sequence name="Status"><gen type="text" value="new,active,closed"/></sequence>
<before><line><data>Id,City,Status</data></line></before>
</env>
<block><line><data>${{Id}},${{City}},${{Status}}</data></line></block>
</tdc>
Id,City,Status 1,Moscow,closed 2,Berlin,new 3,Paris,closed 4,Moscow,new 5,Berlin,closed 6,Paris,new 7,Moscow,new 8,Berlin,active 9,Paris,active 10,Moscow,active
--seed — cambiar la aleatoriedad
El config trae una semilla fija, pero usted quiere otro conjunto de valores sin tocar el
archivo. --seed lo sobrescribe: las columnas de contador (Id) y de recorrido cíclico
(City) no dependen de la semilla, así que solo cambia Status.
--count — cuántas filas
--count 4 renderiza cuatro filas. Las columnas posicionales (contador, texto cíclico)
son un prefijo; las columnas de proporción exacta (percent, <mix>) y las de uniq
se recalculan a partir del nuevo total.
Vea Determinismo y proporciones.
--output — escribir en un archivo
-o (o --output) escribe en un archivo; a stdout no sale nada:
tdcv2 demo.tdc -o out.csv
--locale — el idioma de los datos de plantilla
Los generadores de plantilla (nombres, ciudades) usan inglés por omisión; --locale ru
cambia todo el archivo al ruso, posición por posición.
--now — fijar el reloj
Algunos generadores leen el reloj: value="today", value="now", person.b_day (una
ventana de edad medida hacia atrás desde hoy) y un generador date al que no se le dieron
límites. Está pensado así — un cumpleaños que sigue a la fecha de hoy es justamente el
punto. Pero eso vuelve al reloj una entrada de la corrida junto al config y la semilla,
y la única que no se puede anotar. El mismo archivo con la misma semilla le da otras
filas mañana.
--now la anota:
tdcv2 people.tdc --seed demo --now 2026-04-23 -o out.csv
Corra eso dentro de un año y obtiene los mismos bytes. Quite la bandera y la corrida lee el reloj real, que es lo que quiere en producción y no lo que quiere en una prueba.
El valor es una fecha en la misma sintaxis que toma <gen type="date" value="…">:
2026-04-23, o 2026-04-23T09:30:00 cuando importa la hora. No hay zona horaria: toda
fecha en TDC es UTC. Un valor que TDC no puede leer es un error, no un regreso silencioso
al reloj real:
tdcv2: invalid --now "yesterday" — expected YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss (UTC)
--data-path — datos externos
Cuando un config lee src="@data/…", la CLI necesita saber dónde está la carpeta
data/. Se le indica con --data-path (es repetible — las carpetas se recorren en orden):
tdcv2 demo.tdc --data-path ./data --data-path ./private-data -o out.csv
Una ruta relativa simple como src="names.txt" se busca primero junto al archivo .tdc
y después en las carpetas de --data-path.
Velocidad y motores — --jobs, --mode, --engine
Normalmente no necesita ninguno de estos: TDC elige el motor a partir del config y decide por su cuenta si paralelizar. En resumen:
--jobs N— fija a mano la cantidad de hilos de trabajo. Esto es solo cuestión de velocidad: la salida es byte por byte idéntica a la de una corrida de un solo hilo.--mode memory— el motor pequeño en RAM (una salida de emergencia para datos chicos y para la API de objetos). Da su propia secuencia de valores: es otro motor, no el mismo resultado.--engine 1|2|3— fuerza un motor específico;--streames un alias heredado de--engine 2.
TDC calcula cuántos hilos caben en la RAM de esta máquina y toma esa cantidad — en una máquina débil la corrida simplemente va más lenta, no se cae a la mitad. Todo el detalle está en Volúmenes grandes.
tdcv2 check
Lee una configuración, la valida y no genera nada. Es lo que quiere en un hook de pre-commit o en un paso de CI: responde «¿esto correría?» sin gastar el tiempo de correrlo.
tdcv2 check demo.tdc
Todo sale por stderr — una configuración válida recibe una línea, y una inválida los
mismos diagnósticos que imprimiría tdcv2 demo.tdc. Por stdout no sale nada, a
propósito: el stdout de un hook es ruido, y quien quiera los datos ejecuta el generador.
tdcv2: demo.tdc is valid
Las advertencias no hacen fallar la comprobación — se imprimen y el código de salida sigue
siendo 0, porque una advertencia describe algo que funciona pero probablemente no es lo
que usted quería. Solo un error sale con 1.
tdcv2 format
Deja ordenado un .tdc — sangría, espaciado de los atributos, tablas <map> alineadas —
con el mismo formateador del editor.
tdcv2 format demo.tdc # imprime el config formateado en stdout
tdcv2 format -w demo.tdc # reescribe el archivo en su lugar (-w / --write)
Formatear nunca cambia lo que genera un config. Un error de sintaxis se muestra y el archivo queda intacto (código de salida 1).
Códigos de salida
| Código | Significado |
|---|---|
0 | Generación exitosa, --help o --version |
1 | Error de lectura, parseo, validación o ejecución |
2 | Argumentos de CLI incorrectos |
Vea también
- Instalar packs —
tdcv2 init,tdcv2 pack. - Volúmenes grandes —
--jobs,--mode,--enginea fondo.