UNPKG

@dmvicent3/tcli

Version:

A CLI tool for managing translations in projects using next-translate

67 lines (66 loc) 2.44 kB
import { confirm, isCancel } from '@clack/prompts'; import { requireConfig, saveConfig } from '../lib/config.js'; import { saveTranslationFile } from '../lib/files.js'; import { existsSync, unlinkSync } from 'fs'; import { join } from 'path'; export async function nsAddCommand(name) { const config = requireConfig(); if (config.namespaces.includes(name)) { console.error(`[${config.defaultNamespace}] Namespace '${name}' already exists`); process.exit(1); } config.namespaces.push(name); config.namespaces.sort(); saveConfig(config); config.langs.forEach((lang) => { saveTranslationFile(config.langDir, lang, name, {}); }); console.log(`[${config.defaultNamespace}] Namespace added`); } export async function nsRemoveCommand(name) { const config = requireConfig(); if (!config.namespaces.includes(name)) { console.error(`[${config.defaultNamespace}] Namespace '${name}' not found`); process.exit(1); } if (name === config.defaultNamespace) { console.error(`[${config.defaultNamespace}] Cannot remove default namespace`); process.exit(1); } const confirmed = await confirm({ message: `Remove namespace '${name}' and all its translations?`, }); if (isCancel(confirmed)) { console.log('[tcli] Operation cancelled'); process.exit(0); } if (!confirmed) return; config.namespaces = config.namespaces.filter((ns) => ns !== name); saveConfig(config); config.langs.forEach((lang) => { const filePath = join(config.langDir, lang, `${name}.json`); if (existsSync(filePath)) { unlinkSync(filePath); } }); console.log(`[${config.defaultNamespace}] Namespace removed`); } export async function nsListCommand() { const config = requireConfig(); console.log(`[${config.defaultNamespace}] Namespaces:`); config.namespaces.forEach((ns) => { const marker = ns === config.defaultNamespace ? ' (default)' : ''; console.log(` ${ns}${marker}`); }); } export async function nsDefaultCommand(name) { const config = requireConfig(); if (!config.namespaces.includes(name)) { console.error(`[${config.defaultNamespace}] Namespace '${name}' not found`); process.exit(1); } config.defaultNamespace = name; saveConfig(config); console.log(`[${name}] Default namespace updated`); }