Gå til innholdet
Sonenta

CLI

v0.2.1 · npm · MIT

@sonenta/cli

Et lett, skriptbart kommandolinjeverktøy for alt du ellers ville gjort i dashbordet: importere et eksisterende i18next-prosjekt, pushe og pulle oversettelser, sammenligne CI mot fjerntjeneren, publisere en CDN-release, og ta et snapshot av bundlene for et offline-first-bygg. MIT, på npm.

Brudd · 0.1 → 0.2

Hele CLI-en går nå gjennom MCP-flaten: den trenger en API-nøkkel med mcp:*-scope — prosjektbegrensede nøkler returnerer 403. Generer en i dashbordet under Org Settings → API Keys, og utsted på nytt alle nøkler du brukte med 0.1.

Installer

Kun npm — det finnes ingen Homebrew-formel for CLI-en. Krever Node 18 eller nyere, og installerer kommandoen sonenta.

terminal
1# installer én gang, globalt2npm i -g @sonenta/cli 4# eller kjør uten å installere5npx @sonenta/cli <command>

Autentiser

Hvert kall sender Authorization: ApiKey <prefix>.<secret> med mcp:*-scope. Logg inn én gang for å lagre nøkkelen i ~/.sonenta/credentials, eller sett SONENTA_TOKEN i CI.

terminal
1# interaktiv — lagrer nøkkelen per host i ~/.sonenta/credentials (0600)2sonenta login --host https://api.sonenta.com3API key: snt_live_••••••••.••••••••••••••••4✓ lagret for https://api.sonenta.com 6# CI — ingen ledetekst, nøkkelen leses fra miljøet7export SONENTA_TOKEN=snt_live_<prefix>.<secret>8sonenta push

Oppløsningsrekkefølge, den første vinner: miljøvariabelen SONENTA_TOKEN, deretter ~/.sonenta/credentials for aktiv host. Generer nøkkelen under Org Settings → API Keys med mcp:*-scope.

Konfigurer

sonenta init skriver en sonenta.config.json i repoet ditt (løses ved å gå oppover fra arbeidskatalogen). Legitimasjonen ligger separat, per bruker, og committes aldri.

sonenta.config.json
1# committet til repoet ditt — ingen hemmeligheter her2{3  "host": "https://api.sonenta.com",4  "project_uuid": "<project_uuid>",5  "version_slug": "main"6}
~/.sonenta/credentials
1# ~/.sonenta/credentials — modus 0600, per bruker, commit aldri2{ "default": "https://api.sonenta.com",3  "hosts": {4    "https://api.sonenta.com": { "api_key": "snt_live_..." }5  } }

version_slug er main som standard. Hold API-nøkkelen utenfor sonenta.config.json — den hører kun hjemme i legitimasjonsfilen eller i SONENTA_TOKEN.

Kommandoer

Gruppert etter hva du gjør — sette opp auth og config, inspisere et prosjekt, eller synkronisere oversettelser. Hver kommando går mot MCP-flaten og respekterer sonenta.config.json.

Auth og oppsett

sonenta login Lagre en API-nøkkel for en host.

Flagg

  • --host <url> API-host å autentisere mot.
  • --token <key> Send nøkkelen ikke-interaktivt i stedet for ledeteksten.

Eksempel

sonenta login --host https://api.sonenta.com
sonenta logout Fjern lagret legitimasjon for en host.

Flagg

Ingen flagg.

Eksempel

sonenta logout
sonenta whoami Vis aktiv host og en maskert nøkkel.

Flagg

Ingen flagg.

Eksempel

sonenta whoami
sonenta init Generer sonenta.config.json for et prosjekt.

Flagg

  • --project <uuid> Prosjekt-UUID som skrives inn i config (obligatorisk).
  • --version <slug> Versjon-slug å sikte mot (standard main).
  • --force Overskriv en eksisterende config-fil.

Eksempel

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

Inspiser

sonenta projects list List opp prosjektene nøkkelen din når frem til.

Flagg

Ingen flagg.

Eksempel

sonenta projects list
sonenta keys list List nøkler som namespace_slug/key_name.

Flagg

  • --namespace <slug> Begrens til ett namespace.

Eksempel

sonenta keys list --namespace common
sonenta status Sammenlign din lokale locales/ mot fjerntjeneren.

Flagg

  • --language <code> Begrens sammenligningen til ett språk.
  • --namespace <slug> Begrens sammenligningen til ett namespace.
  • --src <dir> Kildekatalog (standard locales).

Eksempel

sonenta status
sonenta missing List opp manglende nøkler oppdaget under kjøring.

Flagg

  • --language <code> Filtrer etter språk.
  • --namespace <slug> Filtrer etter namespace.
  • --limit <n> Begrens antall rader.

Eksempel

sonenta missing --limit 50

Import og synkronisering

sonenta import <files...> Engangs i18next-import — nestet eller flat; oppretter nøkler, upserter oversettelser, idempotent.

Flagg

  • --dry-run Kun forhåndsvisning; sender ingenting.
  • --status <draft|translated> Innkommende status (standard translated).
  • --language <code> Tving språket i stedet for å utlede det fra stien.
  • --namespace <slug> Tving namespace (obligatorisk for en naken <lang>.json).
  • --version <slug> Sikt mot en ikke-standard versjon.

Eksempel

sonenta import locales/fr/common.json
sonenta push Push hele det lokale locales/-treet i ett enkelt import-kall.

Flagg

  • --src <dir> Kildekatalog (standard locales).
  • --dry-run Kun forhåndsvisning; sender ingenting.
  • --status <state> Innkommende status (standard translated).

Eksempel

sonenta push --dry-run
sonenta pull Skriv fjernoversettelser til locales/<lang>/<namespace>.json (flat).

Flagg

  • --language <code> Begrens til ett språk.
  • --namespace <slug> Begrens til ett namespace.
  • --dest <dir> Målkatalog (standard locales).

Eksempel

sonenta pull --language fr
sonenta export Eksporter som i18next-JSON — flat som standard, --nested for trær.

Flagg

  • --nested Skriv ut nestede trær i stedet for flate nøkler.
  • --out <dir> Skriv filer til en katalog i stedet for stdout.

Eksempel

sonenta export --nested --out ./dump
sonenta releases publish Utløs en CDN-release; abonnerte SDK-er oppdateres live.

Flagg

  • --version <slug> Versjon å publisere (standard main).
  • --dry-run Kun forhåndsvisning; publiserer ingenting.

Eksempel

sonenta releases publish
sonenta snapshot Hent de offentlige CDN-bundlene inn i en byggetidsmodul for offline-first SDK-fallback.

Flagg

  • --format <ts|json> Utdataformat: ts (standard) eller json.
  • --out <file> Skriv til en fil i stedet for stdout.
  • --cdn <base> CDN-base (standard https://cdn.sonenta.com).

Eksempel

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

Hver kommando godtar også --host <url> for å overstyre den konfigurerte API-hosten for én enkelt kjøring.

Brudd 0.1 → 0.2

Oppgraderer du fra 0.1? To endringer krever handling.

Videre