Przejdź do treści
Sonenta

CLI

v0.2.1 · npm · MIT

@sonenta/cli

Lekka i skryptowalna linia poleceń do wszystkiego, co inaczej robiłbyś w panelu: importowanie istniejącego projektu i18next, wypychanie i pobieranie tłumaczeń, porównywanie CI ze zdalnym repozytorium, publikowanie wydania CDN oraz tworzenie migawek pakietów na potrzeby buildu offline-first. MIT, na npm.

Zmiana łamiąca · 0.1 → 0.2

Całe CLI działa teraz przez powierzchnię MCP: wymaga klucza API o zakresie mcp:* — klucze ograniczone do projektu zwracają 403. Wygeneruj taki klucz w panelu w sekcji Org Settings → API Keys i ponownie wydaj każdy klucz używany w wersji 0.1.

Instalacja

Wyłącznie npm — nie ma formuły Homebrew dla CLI. Wymaga Node 18 lub nowszego i instaluje polecenie sonenta.

terminal
1# install once, globally2npm i -g @sonenta/cli 4# or run without installing5npx @sonenta/cli <command>

Uwierzytelnianie

Każde wywołanie wysyła Authorization: ApiKey <prefix>.<secret> o zakresie mcp:*. Zaloguj się raz, aby zapisać klucz w ~/.sonenta/credentials, lub ustaw SONENTA_TOKEN w CI.

terminal
1# interactive — stores the key per host in ~/.sonenta/credentials (0600)2sonenta login --host https://api.sonenta.com3API key: snt_live_••••••••.••••••••••••••••4✓ saved for https://api.sonenta.com 6# CI — no prompt, key read from the environment7export SONENTA_TOKEN=snt_live_<prefix>.<secret>8sonenta push

Kolejność rozstrzygania, wygrywa pierwsza wartość: zmienna środowiskowa SONENTA_TOKEN, następnie ~/.sonenta/credentials dla aktywnego hosta. Wygeneruj klucz w sekcji Org Settings → API Keys o zakresie mcp:*.

Konfiguracja

sonenta init zapisuje plik sonenta.config.json w Twoim repozytorium (rozwiązywany poprzez wędrówkę w górę od katalogu roboczego). Dane uwierzytelniające żyją osobno, dla każdego użytkownika, i nigdy nie są commitowane.

sonenta.config.json
1# committed to your repo — no secrets here2{3  "host": "https://api.sonenta.com",4  "project_uuid": "<project_uuid>",5  "version_slug": "main"6}
~/.sonenta/credentials
1# ~/.sonenta/credentials — mode 0600, per user, never commit2{ "default": "https://api.sonenta.com",3  "hosts": {4    "https://api.sonenta.com": { "api_key": "snt_live_..." }5  } }

version_slug domyślnie wynosi main. Trzymaj klucz API poza sonenta.config.json — jego miejsce jest wyłącznie w pliku z danymi uwierzytelniającymi lub w SONENTA_TOKEN.

Polecenia

Pogrupowane według tego, co robisz — konfiguracja uwierzytelniania i ustawień, inspekcja projektu lub synchronizacja tłumaczeń. Każde polecenie działa przez powierzchnię MCP i respektuje sonenta.config.json.

Uwierzytelnianie i konfiguracja

sonenta login Zapisz klucz API dla hosta.

Opcje

  • --host <url> Host API, względem którego następuje uwierzytelnianie.
  • --token <key> Przekaż klucz bezinteraktywnie zamiast wpisywać go w monicie.

Przykład

sonenta login --host https://api.sonenta.com
sonenta logout Usuń zapisane dane uwierzytelniające dla hosta.

Opcje

Brak opcji.

Przykład

sonenta logout
sonenta whoami Pokaż aktywny host i zamaskowany klucz.

Opcje

Brak opcji.

Przykład

sonenta whoami
sonenta init Wygeneruj szkielet sonenta.config.json dla projektu.

Opcje

  • --project <uuid> UUID projektu do zapisania w konfiguracji (wymagane).
  • --version <slug> Slug wersji, którą chcesz wskazać (domyślnie main).
  • --force Nadpisz istniejący plik konfiguracyjny.

Przykład

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

Inspekcja

sonenta projects list Wylistuj projekty, do których ma dostęp Twój klucz.

Opcje

Brak opcji.

Przykład

sonenta projects list
sonenta keys list Wylistuj klucze jako namespace_slug/key_name.

Opcje

  • --namespace <slug> Ogranicz do jednego namespace.

Przykład

sonenta keys list --namespace common
sonenta status Porównaj lokalny katalog locales/ ze zdalnym.

Opcje

  • --language <code> Ogranicz porównanie do jednego języka.
  • --namespace <slug> Ogranicz porównanie do jednego namespace.
  • --src <dir> Katalog źródłowy (domyślnie locales).

Przykład

sonenta status
sonenta missing Wylistuj brakujące klucze wykryte w czasie działania.

Opcje

  • --language <code> Filtruj według języka.
  • --namespace <slug> Filtruj według namespace.
  • --limit <n> Ogranicz liczbę wierszy.

Przykład

sonenta missing --limit 50

Import i synchronizacja

sonenta import <files...> Jednorazowy import i18next — zagnieżdżony lub płaski; tworzy klucze, aktualizuje tłumaczenia, idempotentny.

Opcje

  • --dry-run Tylko podgląd; nic nie wysyła.
  • --status <draft|translated> Status przychodzący (domyślnie translated).
  • --language <code> Wymuś język zamiast wnioskować go ze ścieżki.
  • --namespace <slug> Wymuś namespace (wymagane dla samego pliku <lang>.json).
  • --version <slug> Wskaż wersję inną niż domyślna.

Przykład

sonenta import locales/fr/common.json
sonenta push Wypchnij całe lokalne drzewo locales/ w jednym wywołaniu importu.

Opcje

  • --src <dir> Katalog źródłowy (domyślnie locales).
  • --dry-run Tylko podgląd; nic nie wysyła.
  • --status <state> Status przychodzący (domyślnie translated).

Przykład

sonenta push --dry-run
sonenta pull Zapisz zdalne tłumaczenia do locales/<lang>/<namespace>.json (płasko).

Opcje

  • --language <code> Ogranicz do jednego języka.
  • --namespace <slug> Ogranicz do jednego namespace.
  • --dest <dir> Katalog docelowy (domyślnie locales).

Przykład

sonenta pull --language fr
sonenta export Eksportuj jako JSON i18next — domyślnie płasko, --nested dla drzew.

Opcje

  • --nested Emituj zagnieżdżone drzewa zamiast płaskich kluczy.
  • --out <dir> Zapisz pliki do katalogu zamiast na stdout.

Przykład

sonenta export --nested --out ./dump
sonenta releases publish Wyzwól wydanie CDN; subskrybujące SDK odświeżają się na żywo.

Opcje

  • --version <slug> Wersja do opublikowania (domyślnie main).
  • --dry-run Tylko podgląd; nic nie publikuje.

Przykład

sonenta releases publish
sonenta snapshot Pobierz publiczne pakiety CDN do modułu build-time na potrzeby fallbacku offline-first SDK.

Opcje

  • --format <ts|json> Format wyjściowy: ts (domyślnie) lub json.
  • --out <file> Zapisz do pliku zamiast na stdout.
  • --cdn <base> Baza CDN (domyślnie https://cdn.sonenta.com).

Przykład

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

Każde polecenie akceptuje również --host <url>, aby nadpisać skonfigurowany host API na czas jednego uruchomienia.

Zmiany łamiące 0.1 → 0.2

Aktualizujesz z wersji 0.1? Dwie zmiany wymagają działania.

Dalej