Опции
-
--host <url>Хост API, против которого аутентифицироваться. -
--token <key>Передать ключ без запроса вместо ввода в приглашении.
Пример
sonenta login --host https://api.sonenta.com CLI
v0.2.1 · npm · MITЛёгкая и скриптуемая командная строка для всего, что вы иначе делали бы в дашборде: импортировать существующий проект i18next, отправлять и забирать переводы, сравнивать CI с удалённым состоянием, публиковать релиз CDN и снимать снапшоты бандлов для offline-first сборки. MIT, в npm.
Несовместимость · 0.1 → 0.2
Теперь весь CLI работает через поверхность MCP: ему нужен ключ API со скоупом mcp:* — ключи, ограниченные проектом, возвращают 403. Сгенерируйте такой ключ в дашборде в разделе Org Settings → API Keys и перевыпустите любой ключ, который вы использовали в 0.1.
Только npm — Homebrew-формулы для CLI нет. Требуется Node 18 или новее; устанавливает команду sonenta.
terminal 1# установить один раз, глобально2npm i -g @sonenta/cli 4# или запустить без установки5npx @sonenta/cli <command> Каждый вызов отправляет Authorization: ApiKey <prefix>.<secret> со скоупом mcp:*. Войдите один раз, чтобы сохранить ключ в ~/.sonenta/credentials, либо задайте SONENTA_TOKEN в CI.
terminal 1# интерактивно — сохраняет ключ для каждого хоста в ~/.sonenta/credentials (0600)2sonenta login --host https://api.sonenta.com3API key: snt_live_••••••••.••••••••••••••••4✓ сохранено для https://api.sonenta.com 6# CI — без запроса, ключ читается из окружения7export SONENTA_TOKEN=snt_live_<prefix>.<secret>8sonenta push Порядок разрешения, выигрывает первый: переменная окружения SONENTA_TOKEN, затем ~/.sonenta/credentials для активного хоста. Создайте ключ в разделе Org Settings → API Keys со скоупом mcp:*.
sonenta init создаёт sonenta.config.json в вашем репозитории (путь определяется поднятием вверх от текущего каталога). Учётные данные хранятся отдельно, для каждого пользователя, и никогда не коммитятся.
sonenta.config.json 1# закоммичено в ваш репозиторий — никаких секретов здесь2{3 "host": "https://api.sonenta.com",4 "project_uuid": "<project_uuid>",5 "version_slug": "main"6} ~/.sonenta/credentials 1# ~/.sonenta/credentials — режим 0600, для каждого пользователя, никогда не коммитить2{ "default": "https://api.sonenta.com",3 "hosts": {4 "https://api.sonenta.com": { "api_key": "snt_live_..." }5 } } version_slug по умолчанию равен main. Держите ключ API вне sonenta.config.json — ему место только в файле учётных данных или в SONENTA_TOKEN.
Сгруппированы по задачам — настроить аутентификацию и конфигурацию, проинспектировать проект или синхронизировать переводы. Каждая команда работает через поверхность MCP и учитывает sonenta.config.json.
--host <url> Хост API, против которого аутентифицироваться. --token <key> Передать ключ без запроса вместо ввода в приглашении. sonenta login --host https://api.sonenta.com Опций нет.
sonenta logout Опций нет.
sonenta whoami --project <uuid> UUID проекта для записи в конфигурацию (обязательно). --version <slug> Слаг версии, на который ориентироваться (по умолчанию main). --force Перезаписать существующий файл конфигурации. sonenta init --project <uuid> --version main Опций нет.
sonenta projects list --namespace <slug> Ограничить одним namespace. sonenta keys list --namespace common --language <code> Ограничить сравнение одним языком. --namespace <slug> Ограничить сравнение одним namespace. --src <dir> Исходный каталог (по умолчанию locales). sonenta status --language <code> Фильтровать по языку. --namespace <slug> Фильтровать по namespace. --limit <n> Ограничить количество строк. sonenta missing --limit 50 --dry-run Только предпросмотр; ничего не отправляет. --status <draft|translated> Входящий статус (по умолчанию translated). --language <code> Принудительно задать язык вместо вывода его из пути. --namespace <slug> Принудительно задать namespace (обязательно для голого <lang>.json). --version <slug> Нацелиться на версию, отличную от версии по умолчанию. sonenta import locales/fr/common.json --src <dir> Исходный каталог (по умолчанию locales). --dry-run Только предпросмотр; ничего не отправляет. --status <state> Входящий статус (по умолчанию translated). sonenta push --dry-run --language <code> Ограничить одним языком. --namespace <slug> Ограничить одним namespace. --dest <dir> Каталог назначения (по умолчанию locales). sonenta pull --language fr --nested Выводить вложенные деревья вместо плоских ключей. --out <dir> Записывать файлы в каталог вместо stdout. sonenta export --nested --out ./dump --version <slug> Версия для публикации (по умолчанию main). --dry-run Только предпросмотр; ничего не публикует. sonenta releases publish --format <ts|json> Формат вывода: ts (по умолчанию) или json. --out <file> Записывать в файл вместо stdout. --cdn <base> База CDN (по умолчанию https://cdn.sonenta.com). sonenta snapshot --out src/sonenta-bundles.ts Каждая команда также принимает --host <url>, чтобы переопределить настроенный хост API на время одного запуска.
Обновляетесь с 0.1? Два изменения требуют действий.
mcp:* — ключи, ограниченные проектом, теперь возвращают 403. push теперь отправляет всё ваше дерево locales/ одним вызовом импорта (раньше это было создание ключа плюс по одному PUT на каждый перевод). Команда идемпотентна и печатает созданные / обновлённые / без изменений. import, export, releases publish, snapshot и projects list — новые в 0.2.0.