Zum Inhalt springen

cards2pack

cards2pack ist ein CLI-Tool, das Adaptive-Card-JSON-Dateien in Greentic-Packs umwandelt. Es:

  • Scannt Karten, erstellt einen Abhängigkeitsgraphen und generiert .ygtc-Flows
  • Extrahiert übersetzbare Zeichenketten für i18n
  • Übersetzt Karten automatisch über greentic-i18n-translator
  • Verpackt alles in ein bereitstellbares .gtpack
Terminal-Fenster
cargo install greentic-cards2pack

Erforderliche Tools:

Terminal-Fenster
cargo install greentic-flow greentic-pack
cargo install greentic-i18n-translator # optional, for --auto-translate
  1. Adaptive Cards erstellen

    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" }
    }
    ]
    }
  2. Pack generieren

    Terminal-Fenster
    greentic-cards2pack generate \
    --cards ./cards \
    --out ./my-pack \
    --name my-pack
  3. Ausgabe

    my-pack/
    pack.yaml
    flows/main.ygtc
    assets/cards/welcome.json
    dist/my-pack.gtpack
    .cards2pack/manifest.json

Hauptbefehl: Karten scannen, Flows generieren, Pack bauen.

Terminal-Fenster
greentic-cards2pack generate [OPTIONS]
FlagBeschreibung
--cards <DIR>Verzeichnis mit Adaptive-Card-JSON-Dateien (erforderlich)
--out <DIR>Ausgabeverzeichnis für den Workspace (erforderlich)
--name <NAME>Pack-Name (erforderlich)
--strictFehler bei fehlenden Zielen, Duplikaten und ungültigem JSON
--group-by <MODE>Flow-Gruppierung: folder oder flow-field
--default-flow <NAME>Standard-Flow-Name für nicht gruppierte Karten
--promptPrompt-basierte Weiterleitung aktivieren (fügt prompt2flow-Knoten hinzu)
--prompt-json <FILE>Answers-JSON für Prompt-Weiterleitung (erfordert --prompt)
--auto-translateKarten automatisch mit bis zu 8 parallelen Threads übersetzen (erfordert greentic-i18n-translator)
--langs <CODES>Kommagetrennte Sprachcodes; weglassen, um in alle über 65 unterstützten Locale-Varianten zu übersetzen
--glossary <FILE>Glossar-JSON für konsistente Übersetzungen
--verboseDetaillierte Ausgabe ausgeben

Übersetzbare Zeichenketten aus Karten in ein JSON-Bundle extrahieren.

Terminal-Fenster
greentic-cards2pack extract-i18n [OPTIONS]
FlagBeschreibung
--input <DIR>Verzeichnis mit Karten-JSON-Dateien (erforderlich)
--output <FILE>Ausgabe-JSON-Pfad (Standard: i18n/en.json)
--prefix <PREFIX>Schlüsselpräfix (Standard: card)
--include-existingZeichenketten einschließen, die bereits $t()-Muster enthalten
--verboseExtraktionsbericht ausgeben

Karten werden identifiziert über (in dieser Prioritätsreihenfolge):

  1. Das Feld greentic.cardId im Karten-JSON
  2. Den Dateinamen ohne Endung (z. B. welcome.jsonwelcome)

Karten werden gruppiert in Flows über:

  • Das Feld flow in den Aktionsdaten
  • --group-by folder (Verzeichnisstruktur)
  • Den Fallback --default-flow
Terminal-Fenster
greentic-cards2pack extract-i18n \
--input ./cards \
--output i18n/en.json \
--verbose

Ausgabe:

i18n/en.json
{
"card.welcome.body_0.text": "Welcome!",
"card.welcome.body_1.text": "How can I help you today?",
"card.welcome.actions_0.title": "Get Started"
}
FeldQuelle
textInhalt von TextBlock
titleAktionstitel, Kartentitel, Toggle-Titel
labelLabels von Eingaben
placeholderPlatzhalter von Eingaben
errorMessageValidierungsfehler
altTextAlternativtext für Bilder
fallbackTextFallback-Inhalt
FactSet title/valueFact-Einträge
ChoiceSet titleAuswahloptionen
Terminal-Fenster
greentic-cards2pack generate \
--cards ./cards \
--out ./my-pack \
--name my-pack \
--auto-translate \
--langs fr,de

Dies extrahiert Zeichenketten aus den ursprünglichen Kartendateien, übersetzt sie über greentic-i18n-translator mit bis zu 8 parallelen Threads und bündelt alles:

my-pack/assets/i18n/
en.json # English (source)
fr.json # French
de.json # German

Verwende ein Glossar, um Markennamen und technische Begriffe konsistent zu halten:

glossary.json
{
"Greentic": "Greentic",
"Dashboard": "Dashboard"
}
Terminal-Fenster
greentic-cards2pack generate \
--cards ./cards --out ./pack --name demo \
--auto-translate --langs fr,de \
--glossary glossary.json

Generierte Flow-Abschnitte werden in Marker eingeschlossen:

# BEGIN GENERATED (cards2pack)
# ... generated nodes ...
# END GENERATED (cards2pack)
# Developer space below (preserved on regen)

Inhalte außerhalb der Marker bleiben erhalten, wenn du erneut generierst.

Mit --strict:

  • Verursachen fehlende Routing-Ziele Fehler (statt Stub-Knoten)
  • Verursachen doppelte cardId-Werte Fehler
  • Verursacht ungültiges JSON Fehler

Verwende Handlebars-Syntax für dynamische Inhalte:

{
"type": "TextBlock",
"text": "Hello, {{name}}!"
}
Terminal-Fenster
# 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 \
--strict

Siehe das translate-demo-Beispiel für eine vollständige Schritt-für-Schritt-Anleitung.