Vai al contenuto
Sonenta

CLI

v0.2.1 · npm · MIT

@sonenta/cli

Una riga di comando leggera e scriptabile per tutto ciò che altrimenti fareste nella dashboard: importare un progetto i18next esistente, fare push e pull delle traduzioni, confrontare la CI con il remoto, pubblicare una release CDN e creare uno snapshot dei bundle per una build offline-first. MIT, su npm.

Rottura · 0.1 → 0.2

Tutta la CLI passa ora attraverso la superficie MCP: richiede una chiave API con scope mcp:* — le chiavi limitate al progetto restituiscono 403. Generatene una nella dashboard sotto Org Settings → API Keys e riemettete qualsiasi chiave usata con la 0.1.

Installazione

Solo npm — non esiste una formula Homebrew per la CLI. Richiede Node 18 o più recente e installa il comando sonenta.

terminal
1# installa una volta, globalmente2npm i -g @sonenta/cli 4# oppure esegui senza installare5npx @sonenta/cli <command>

Autenticazione

Ogni chiamata invia Authorization: ApiKey <prefix>.<secret> con scope mcp:*. Effettuate il login una volta per memorizzare la chiave in ~/.sonenta/credentials, oppure impostate SONENTA_TOKEN in CI.

terminal
1# interattivo — memorizza la chiave per host in ~/.sonenta/credentials (0600)2sonenta login --host https://api.sonenta.com3API key: snt_live_••••••••.••••••••••••••••4✓ salvato per https://api.sonenta.com 6# CI — senza prompt, la chiave viene letta dall'ambiente7export SONENTA_TOKEN=snt_live_<prefix>.<secret>8sonenta push

Ordine di risoluzione, vince il primo: la variabile d'ambiente SONENTA_TOKEN, poi ~/.sonenta/credentials per l'host attivo. Generate la chiave sotto Org Settings → API Keys con scope mcp:*.

Configurazione

sonenta init scrive un sonenta.config.json nel vostro repository (risolto risalendo dalla directory corrente). Le credenziali vivono separatamente, per utente, e non vengono mai committate.

sonenta.config.json
1# committato nel vostro repository — nessun segreto qui2{3  "host": "https://api.sonenta.com",4  "project_uuid": "<project_uuid>",5  "version_slug": "main"6}
~/.sonenta/credentials
1# ~/.sonenta/credentials — modalità 0600, per utente, da non committare mai2{ "default": "https://api.sonenta.com",3  "hosts": {4    "https://api.sonenta.com": { "api_key": "snt_live_..." }5  } }

version_slug vale main per impostazione predefinita. Tenete la chiave API fuori da sonenta.config.json — appartiene solo al file delle credenziali o a SONENTA_TOKEN.

Comandi

Raggruppati per attività — configurare autenticazione e config, ispezionare un progetto o sincronizzare le traduzioni. Ogni comando passa attraverso la superficie MCP e rispetta sonenta.config.json.

Auth e config

sonenta login Memorizzare una chiave API per un host.

Opzioni

  • --host <url> Host API contro cui autenticarsi.
  • --token <key> Passare la chiave senza prompt invece che interattivamente.

Esempio

sonenta login --host https://api.sonenta.com
sonenta logout Rimuovere le credenziali memorizzate di un host.

Opzioni

Nessuna opzione.

Esempio

sonenta logout
sonenta whoami Mostrare l'host attivo e una chiave mascherata.

Opzioni

Nessuna opzione.

Esempio

sonenta whoami
sonenta init Generare sonenta.config.json per un progetto.

Opzioni

  • --project <uuid> UUID del progetto da scrivere nella config (obbligatorio).
  • --version <slug> Slug di versione da puntare (predefinito main).
  • --force Sovrascrivere un file di config esistente.

Esempio

sonenta init --project <uuid> --version main

Ispezionare

sonenta projects list Elencare i progetti accessibili dalla vostra chiave.

Opzioni

Nessuna opzione.

Esempio

sonenta projects list
sonenta keys list Elencare le chiavi nella forma namespace_slug/key_name.

Opzioni

  • --namespace <slug> Limitare a un namespace.

Esempio

sonenta keys list --namespace common
sonenta status Confrontare la vostra locales/ locale con il remoto.

Opzioni

  • --language <code> Limitare il confronto a una lingua.
  • --namespace <slug> Limitare il confronto a un namespace.
  • --src <dir> Directory sorgente (predefinito locales).

Esempio

sonenta status
sonenta missing Elencare le chiavi mancanti rilevate a runtime.

Opzioni

  • --language <code> Filtrare per lingua.
  • --namespace <slug> Filtrare per namespace.
  • --limit <n> Limitare il numero di righe.

Esempio

sonenta missing --limit 50

Import e sincronizzazione

sonenta import <files...> Import i18next in un'unica passata — annidato o piatto; crea le chiavi, aggiorna le traduzioni, idempotente.

Opzioni

  • --dry-run Solo anteprima; non invia nulla.
  • --status <draft|translated> Stato in ingresso (predefinito translated).
  • --language <code> Forzare la lingua invece di dedurla dal percorso.
  • --namespace <slug> Forzare il namespace (obbligatorio per un <lang>.json nudo).
  • --version <slug> Puntare a una versione non predefinita.

Esempio

sonenta import locales/fr/common.json
sonenta push Fare push dell'intero albero locales/ locale in un'unica chiamata di import.

Opzioni

  • --src <dir> Directory sorgente (predefinito locales).
  • --dry-run Solo anteprima; non invia nulla.
  • --status <state> Stato in ingresso (predefinito translated).

Esempio

sonenta push --dry-run
sonenta pull Scrivere le traduzioni remote in locales/<lang>/<namespace>.json (piatto).

Opzioni

  • --language <code> Limitare a una lingua.
  • --namespace <slug> Limitare a un namespace.
  • --dest <dir> Directory di destinazione (predefinito locales).

Esempio

sonenta pull --language fr
sonenta export Esportare in JSON i18next — piatto per impostazione predefinita, --nested per gli alberi.

Opzioni

  • --nested Emettere alberi annidati invece di chiavi piatte.
  • --out <dir> Scrivere i file in una directory invece che su stdout.

Esempio

sonenta export --nested --out ./dump
sonenta releases publish Attivare una release CDN; gli SDK abbonati si aggiornano in tempo reale.

Opzioni

  • --version <slug> Versione da pubblicare (predefinito main).
  • --dry-run Solo anteprima; non pubblica nulla.

Esempio

sonenta releases publish
sonenta snapshot Recuperare i bundle CDN pubblici in un modulo di build per il fallback offline-first dell'SDK.

Opzioni

  • --format <ts|json> Formato di output: ts (predefinito) o json.
  • --out <file> Scrivere su un file invece che su stdout.
  • --cdn <base> Base CDN (predefinito https://cdn.sonenta.com).

Esempio

sonenta snapshot --out src/sonenta-bundles.ts

Ogni comando accetta anche --host <url> per sovrascrivere l'host API configurato per una singola esecuzione.

Rotture 0.1 → 0.2

State aggiornando dalla 0.1? Due modifiche richiedono un intervento.

Avanti