cards2pack
Resumen
Sección titulada «Resumen»cards2pack es una herramienta CLI que convierte archivos JSON de Adaptive Card en packs de Greentic. Hace lo siguiente:
- Escanea cards, construye un grafo de dependencias y genera flows
.ygtc - Extrae cadenas traducibles para i18n
- Traduce automáticamente cards mediante
greentic-i18n-translator - Empaqueta todo en un
.gtpacklisto para desplegar
Instalación
Sección titulada «Instalación»cargo install greentic-cards2packHerramientas requeridas:
cargo install greentic-flow greentic-packcargo install greentic-i18n-translator # optional, for --auto-translateInicio rápido
Sección titulada «Inicio rápido»-
Crear Adaptive Cards
cards/welcome.json {"type": "AdaptiveCard","version": "1.4","body": [{ "type": "TextBlock", "text": "Welcome!", "size": "Large" },{ "type": "TextBlock", "text": "How can I help you today?" }],"actions": [{"type": "Action.Submit","title": "Get Started","data": { "flow": "demo", "step": "next-card" }}]} -
Generar el pack
Ventana de terminal greentic-cards2pack generate \--cards ./cards \--out ./my-pack \--name my-pack -
Salida
my-pack/pack.yamlflows/main.ygtcassets/cards/welcome.jsondist/my-pack.gtpack.cards2pack/manifest.json
Referencia CLI
Sección titulada «Referencia CLI»generate
Sección titulada «generate»Comando principal: escanea cards, genera flows y construye el pack.
greentic-cards2pack generate [OPTIONS]| Flag | Descripción |
|---|---|
--cards <DIR> | Directorio con archivos JSON de Adaptive Card (requerido) |
--out <DIR> | Directorio de workspace de salida (requerido) |
--name <NAME> | Nombre del pack (requerido) |
--strict | Produce errores por destinos faltantes, duplicados o JSON no válido |
--group-by <MODE> | Agrupación de flows: folder o flow-field |
--default-flow <NAME> | Nombre del flow por defecto para cards sin agrupar |
--prompt | Habilita enrutamiento basado en prompt (agrega nodo prompt2flow) |
--prompt-json <FILE> | JSON de respuestas para enrutamiento por prompt (requiere --prompt) |
--auto-translate | Traduce cards automáticamente con hasta 8 hilos en paralelo (requiere greentic-i18n-translator) |
--langs <CODES> | Códigos de idioma separados por comas; si se omite, traduce a los más de 65 locales compatibles |
--glossary <FILE> | JSON de glosario para traducciones consistentes |
--verbose | Imprime salida detallada |
extract-i18n
Sección titulada «extract-i18n»Extrae cadenas traducibles de las cards en un bundle JSON.
greentic-cards2pack extract-i18n [OPTIONS]| Flag | Descripción |
|---|---|
--input <DIR> | Directorio de archivos JSON de cards (requerido) |
--output <FILE> | Ruta del JSON de salida (por defecto: i18n/en.json) |
--prefix <PREFIX> | Prefijo de clave (por defecto: card) |
--include-existing | Incluye cadenas que ya contienen patrones $t() |
--verbose | Imprime el informe de extracción |
Identificación de Cards
Sección titulada «Identificación de Cards»Las cards se identifican por (en orden de prioridad):
- El campo
greentic.cardIden el JSON de la card - El nombre base del archivo (por ejemplo,
welcome.json→welcome)
Las cards se agrupan en flows por:
- El campo
flowen los datos de la acción --group-by folder(estructura de directorios)- El fallback
--default-flow
i18n y traducción automática
Sección titulada «i18n y traducción automática»Extraer cadenas
Sección titulada «Extraer cadenas»greentic-cards2pack extract-i18n \ --input ./cards \ --output i18n/en.json \ --verboseSalida:
{ "card.welcome.body_0.text": "Welcome!", "card.welcome.body_1.text": "How can I help you today?", "card.welcome.actions_0.title": "Get Started"}Tipos de campos extraídos
Sección titulada «Tipos de campos extraídos»| Campo | Origen |
|---|---|
text | Contenido de TextBlock |
title | Títulos de acciones, títulos de cards y títulos de toggles |
label | Etiquetas de inputs |
placeholder | Placeholders de inputs |
errorMessage | Errores de validación |
altText | Texto alternativo de imágenes |
fallbackText | Contenido fallback |
FactSet title/value | Entradas de facts |
ChoiceSet title | Opciones de choice |
Traducción automática (un solo comando)
Sección titulada «Traducción automática (un solo comando)»greentic-cards2pack generate \ --cards ./cards \ --out ./my-pack \ --name my-pack \ --auto-translate \ --langs fr,deEsto extrae cadenas de los archivos originales de cards, las traduce mediante greentic-i18n-translator usando hasta 8 hilos concurrentes y empaqueta todo:
my-pack/assets/i18n/ en.json # English (source) fr.json # French de.json # GermanGlosario
Sección titulada «Glosario»Usa un glosario para mantener consistentes los nombres de marca y términos técnicos:
{ "Greentic": "Greentic", "Dashboard": "Dashboard"}greentic-cards2pack generate \ --cards ./cards --out ./pack --name demo \ --auto-translate --langs fr,de \ --glossary glossary.jsonGeneración de Flows
Sección titulada «Generación de Flows»Las secciones de flow generadas se envuelven en marcadores:
# BEGIN GENERATED (cards2pack)# ... generated nodes ...# END GENERATED (cards2pack)
# Developer space below (preserved on regen)El contenido fuera de los marcadores se conserva cuando regeneras.
Modo estricto
Sección titulada «Modo estricto»Con --strict:
- Los destinos de ruta faltantes producen errores (en lugar de nodos stub)
- Los valores duplicados de
cardIdproducen errores - El JSON no válido produce errores
Variables de plantilla
Sección titulada «Variables de plantilla»Usa sintaxis Handlebars para contenido dinámico:
{ "type": "TextBlock", "text": "Hello, {{name}}!"}Ejemplo: Formulario de varios pasos con traducción
Sección titulada «Ejemplo: Formulario de varios pasos con traducción»# Create cards in cards/ directory, then:greentic-cards2pack generate \ --cards ./cards \ --out ./checkout-pack \ --name checkout \ --auto-translate \ --langs fr,ja,es \ --glossary glossary.json \ --strictConsulta el ejemplo translate-demo para ver un recorrido completo.