Options
-
--host <url>Hôte API contre lequel s'authentifier. -
--token <key>Passer la clé sans invite plutôt qu'au prompt.
Exemple
sonenta login --host https://api.sonenta.com CLI
v0.2.1 · npm · MITUne ligne de commande légère et scriptable pour tout ce que vous feriez autrement dans le dashboard : importer un projet i18next existant, pousser et tirer des traductions, comparer la CI au distant, publier une release CDN, et faire un snapshot des bundles pour un build offline-first. MIT, sur npm.
Rupture · 0.1 → 0.2
Toute la CLI passe désormais par la surface MCP : il lui faut une clé API au scope mcp:* — les clés limitées au projet renvoient 403. Générez-en une dans le dashboard sous Org Settings → API Keys et ré-émettez toute clé utilisée avec la 0.1.
npm uniquement — il n'y a pas de formule Homebrew pour la CLI. Nécessite Node 18 ou plus récent, et installe la commande sonenta.
terminal 1# installer une fois, globalement2npm i -g @sonenta/cli 4# ou exécuter sans installer5npx @sonenta/cli <command> Chaque appel envoie Authorization: ApiKey <prefix>.<secret> au scope mcp:*. Connectez-vous une fois pour stocker la clé dans ~/.sonenta/credentials, ou définissez SONENTA_TOKEN en CI.
terminal 1# interactif — stocke la clé par hôte dans ~/.sonenta/credentials (0600)2sonenta login --host https://api.sonenta.com3API key: snt_live_••••••••.••••••••••••••••4✓ enregistré pour https://api.sonenta.com 6# CI — sans invite, la clé est lue depuis l'environnement7export SONENTA_TOKEN=snt_live_<prefix>.<secret>8sonenta push Ordre de résolution, le premier l'emporte : la variable d'environnement SONENTA_TOKEN, puis ~/.sonenta/credentials pour l'hôte actif. Générez la clé sous Org Settings → API Keys au scope mcp:*.
sonenta init écrit un sonenta.config.json dans votre dépôt (résolu en remontant depuis le répertoire courant). Les identifiants vivent à part, par utilisateur, et ne sont jamais committés.
sonenta.config.json 1# committé dans votre dépôt — aucun secret ici2{3 "host": "https://api.sonenta.com",4 "project_uuid": "<project_uuid>",5 "version_slug": "main"6} ~/.sonenta/credentials 1# ~/.sonenta/credentials — mode 0600, par utilisateur, ne jamais committer2{ "default": "https://api.sonenta.com",3 "hosts": {4 "https://api.sonenta.com": { "api_key": "snt_live_..." }5 } } version_slug vaut main par défaut. Gardez la clé API hors du sonenta.config.json — elle n'a sa place que dans le fichier d'identifiants ou dans SONENTA_TOKEN.
Regroupées par usage — configurer l'authentification et la config, inspecter un projet, ou synchroniser les traductions. Chaque commande passe par la surface MCP et respecte sonenta.config.json.
--host <url> Hôte API contre lequel s'authentifier. --token <key> Passer la clé sans invite plutôt qu'au prompt. sonenta login --host https://api.sonenta.com Aucune option.
sonenta logout Aucune option.
sonenta whoami --project <uuid> UUID du projet à écrire dans la config (obligatoire). --version <slug> Slug de version à cibler (défaut main). --force Écraser un fichier de config existant. sonenta init --project <uuid> --version main Aucune option.
sonenta projects list --namespace <slug> Restreindre à un namespace. sonenta keys list --namespace common --language <code> Limiter la comparaison à une langue. --namespace <slug> Limiter la comparaison à un namespace. --src <dir> Répertoire source (défaut locales). sonenta status --language <code> Filtrer par langue. --namespace <slug> Filtrer par namespace. --limit <n> Plafonner le nombre de lignes. sonenta missing --limit 50 --dry-run Prévisualisation seule ; n'envoie rien. --status <draft|translated> Statut entrant (défaut translated). --language <code> Forcer la langue au lieu de la déduire du chemin. --namespace <slug> Forcer le namespace (obligatoire pour un <lang>.json nu). --version <slug> Cibler une version non par défaut. sonenta import locales/fr/common.json --src <dir> Répertoire source (défaut locales). --dry-run Prévisualisation seule ; n'envoie rien. --status <state> Statut entrant (défaut translated). sonenta push --dry-run --language <code> Limiter à une langue. --namespace <slug> Limiter à un namespace. --dest <dir> Répertoire de destination (défaut locales). sonenta pull --language fr --nested Émettre des arbres imbriqués au lieu de clés plates. --out <dir> Écrire des fichiers dans un répertoire plutôt que sur stdout. sonenta export --nested --out ./dump --version <slug> Version à publier (défaut main). --dry-run Prévisualisation seule ; ne publie rien. sonenta releases publish --format <ts|json> Format de sortie : ts (défaut) ou json. --out <file> Écrire dans un fichier plutôt que sur stdout. --cdn <base> Base CDN (défaut https://cdn.sonenta.com). sonenta snapshot --out src/sonenta-bundles.ts Chaque commande accepte aussi --host <url> pour surcharger l'hôte API configuré le temps d'une exécution.
Vous montez depuis la 0.1 ? Deux changements demandent une action.
mcp:* — les clés limitées au projet renvoient désormais 403. push envoie maintenant tout votre arbre locales/ en un seul appel d'import (c'était une création de clé plus un PUT par traduction). Idempotent, il affiche créées / mises à jour / inchangées. import, export, releases publish, snapshot et projects list sont nouvelles en 0.2.0.