Accent CLI

0.17.0 · active · verified Wed Apr 22

The `accent-cli` package provides a robust command-line interface for seamless interaction with an Accent localization instance. It empowers developers to automate critical localization workflows, including synchronizing translation files, managing project configurations, and executing custom hooks directly from the terminal or within CI/CD pipelines. The current stable version is 0.17.0, and it follows a semantic versioning approach, with updates released to introduce new features, improve stability, and address bug fixes in alignment with the Accent platform's development. A key differentiator is its deep integration with the Accent platform, supporting various localization file formats such as JSON and `.strings`. It offers highly flexible configuration via a dedicated `accent.json` file, which supports powerful glob-pattern matching for file paths, and environment variables for sensitive data like API keys and URLs, providing secure and adaptable deployment options.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to execute `accent-cli` commands programmatically from a Node.js application using the `child_process.exec` function. It includes the creation of a temporary `accent.json` configuration file and a dummy localization file to simulate a project setup, runs the `accent sync` command, and then cleans up the generated temporary files and directories.

import { exec } from 'child_process';
import * as path from 'path';
import * as fs from 'fs';

// Define paths for dummy files
const configPath = path.join(process.cwd(), 'accent.json');
const dummyLocaleDir = path.join(process.cwd(), 'localization_test');
const dummyLocaleFilePath = path.join(dummyLocaleDir, 'en.json');

// Create a dummy accent.json for demonstration
const dummyConfig = {
  "apiUrl": process.env.ACCENT_API_URL ?? "http://localhost:3000",
  "apiKey": process.env.ACCENT_API_KEY ?? "sk_exampleapikey123", // Replace with a real key or env var in production
  "project": process.env.ACCENT_PROJECT ?? "a1b2c3d4-e5f6-7890-1234-567890abcdef",
  "files": [
    {
      "format": "json",
      "source": "localization_test/en.json",
      "target": "localization_test/%slug%/%document_path%.json"
    }
  ]
};
fs.writeFileSync(configPath, JSON.stringify(dummyConfig, null, 2));
console.log(`Created dummy accent.json at ${configPath}`);

// Create a dummy localization file
if (!fs.existsSync(dummyLocaleDir)) {
  fs.mkdirSync(dummyLocaleDir);
}
fs.writeFileSync(dummyLocaleFilePath, JSON.stringify({ "hello": "Hello from accent-cli!" }, null, 2));
console.log(`Created dummy localization/en.json at ${dummyLocaleFilePath}`);

console.log('Running accent-cli programmatically with `accent sync`...');

exec('accent sync', (error, stdout, stderr) => {
  if (error) {
    console.error(`Error executing accent sync: ${error.message}`);
    console.error(`stderr: ${stderr}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  if (stderr) {
    console.warn(`stderr (warnings/info): ${stderr}`);
  }
  console.log('accent-cli sync command executed successfully.');

  // Clean up dummy files and directory
  try {
    fs.unlinkSync(configPath);
    fs.unlinkSync(dummyLocaleFilePath);
    fs.rmdirSync(dummyLocaleDir, { recursive: true });
    console.log('Cleaned up dummy files and directory.');
  } catch (cleanupError) {
    console.error(`Error during cleanup: ${cleanupError}`);
  }
});

view raw JSON →