@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.
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.dev --token snt_live_<prefix>.<secret>3Logged in as user@example.com (Acme Inc) on https://api.sonenta.dev. 5# CI, no prompt, key read from the environment6export SONENTA_TOKEN=snt_live_<prefix>.<secret>7sonenta 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.dev",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.dev",3 "hosts": {4 "https://api.sonenta.dev": { "api_key": "snt_live_<prefix>.<secret>" }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. -
--email <email> cmd_login_flag_email -
--default cmd_login_flag_default
Przykład
sonenta login --host https://api.sonenta.dev --token snt_live_<prefix>.<secret> sonenta logout Usuń zapisane dane uwierzytelniające dla hosta. sonenta whoami Pokaż aktywny host i zamaskowany klucz. 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.
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; opublikowane paczki są serwowane Twoim aplikacjom z CDN. 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.