Skip to documentation
DocumentationCommand-line interface

Pull, push, and CI

Synchronize translation files, understand merge behavior, and make repository checks repeatable.

On this page

Pull translations into the repository

Terminal · pull

rerune pull

Pull loads rerune.json, fetches published translations, refreshes platform metadata and server keys, and merges server and local values using synchronization state and key timestamps. It creates missing translation files. Local-only keys can survive the merge, so use a fresh output directory when a build must contain only published content. Review the resulting changes before committing them.

The CLI prepares every language before replacing local files and updating last_sync. A preparation or local-write failure keeps the previous files and synchronization state. A successful pull may produce no terminal output; check the exit status and file diff.

Push local translations

Terminal · push

rerune push

Push requires a local file for each configured language. It reconciles the configured language list with the project, prepares merged content, uploads the language files, then writes the merged local files and updated synchronization state.

Pushing translations needs edit access. Adding a missing project language also needs project settings access. Pull and push take no positional arguments in the documented workflow; use rerune help pull and rerune help push to check your installed version.

Use the CLI in CI

For a complete pull, validate, build, and deploy workflow, follow the CI/CD guide and its runnable GitHub Actions example. The drift check below is useful when your repository commits translation files.

  1. Generate and review rerune.json locally. Make sure it references RERUNE_API_KEY rather than containing the secret.
  2. Install a pinned CLI release and supply the API key through your CI secret store.
  3. Run in the directory containing rerune.json and provide the configured translation files.
  4. Run the sync, check its exit status, then run your normal localization generation, type checks, and application tests.

CI shell step · detect translation changes

rerune version
rerune pull
git diff --exit-code -- path/to/translations

Replace path/to/translations with your configured folder. This check fails when pull changes tracked locale files. To include new untracked files, add an explicit git status check in your pipeline. Decide whether your workflow should fail on drift or open a reviewed translation update.

Keep a translation-check job separate from a job that writes to ReRune. Run unattended jobs only with credentials and permissions appropriate to their intended changes.

Manage projects from the terminal

Terminal · discover organisations and projects

rerune organisation list --json
rerune project list --json

Terminal · create a project

rerune project create \
  --organisation '<ORGANISATION_ID>' \
  --name Website \
  --language en=English \
  --language de=German

Terminal · add a language

rerune project language add --code de --name German

Replace the organisation placeholder with an ID returned by organisation list. The first language in project creation becomes the main language. Creating a project does not automatically make it the active project in rerune.json; run interactive setup to select it.

Use --json on supported list and management commands when another program needs to parse the response. Check command-specific help for available options.

Video walkthrough

CLI setup, sync, and publication

Follow CLI 1.0.13 through installation, project setup, pull and push, merge conflicts, OTA Publish IDs, publication, and unattended commands.

Watch on YouTube