lezu 0.0.19 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -473,7 +473,7 @@ async function configureReleaseCommand(rl, config) {
473
473
  }
474
474
 
475
475
  // src/index.ts
476
- var version = "0.0.1";
476
+ var version = "0.0.20";
477
477
  program.name("lezu").description("CLI tool for managing translations with Lezu").version(version);
478
478
  program.addCommand(createLoadCommand());
479
479
  program.addCommand(createAddCommand());
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/commands/add.ts","../src/commands/release.ts","../src/interactive.ts"],"sourcesContent":["import { program } from 'commander'\nimport chalk from 'chalk'\nimport { createLoadCommand } from './commands/load.js'\nimport { createAddCommand } from './commands/add.js'\nimport { createGetCommand } from './commands/get.js'\nimport { createReleaseCommand } from './commands/release.js'\nimport { interactiveMode } from './interactive.js'\nimport { loadConfig } from './config.js'\n\n// Version from package.json\nconst version = '0.0.1'\n\nprogram\n .name('lezu')\n .description('CLI tool for managing translations with Lezu')\n .version(version)\n\n// Add subcommands\nprogram.addCommand(createLoadCommand())\nprogram.addCommand(createAddCommand())\nprogram.addCommand(createGetCommand())\nprogram.addCommand(createReleaseCommand())\n\n// Handle case when no command is provided - run interactive mode\nprogram.action(async () => {\n console.log(chalk.blue('šŸ‘‹ Welcome to Lezu CLI!'))\n console.log()\n \n try {\n // Load initial config from file/env for defaults\n const initialConfig = loadConfig({})\n await interactiveMode(initialConfig)\n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n})\n\n// Show help when no arguments provided\nif (process.argv.length <= 2) {\n // Run interactive mode\n program.action(() => {})\n} else {\n // Parse commands normally\n program.parse()\n}","import { Command } from 'commander'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport { loadConfig, validateConfig } from '../config.js'\nimport { LezuApiClient } from '../api.js'\nimport type { Config } from '../types.js'\n\nexport function createAddCommand() {\n const command = new Command('add')\n .description('Add a new translation key with values')\n .requiredOption('-k, --key <key>', 'Translation key (e.g., \"common.save\")')\n .option('-v, --value <value>', 'Value for the source language')\n .option('--en <value>', 'English translation')\n .option('--es <value>', 'Spanish translation')\n .option('--fr <value>', 'French translation')\n .option('--de <value>', 'German translation')\n .option('--nl <value>', 'Dutch translation')\n .option('--it <value>', 'Italian translation')\n .option('--pt <value>', 'Portuguese translation')\n .option('--ru <value>', 'Russian translation')\n .option('--ja <value>', 'Japanese translation')\n .option('--ko <value>', 'Korean translation')\n .option('--zh <value>', 'Chinese translation')\n .option('--ar <value>', 'Arabic translation')\n .option('-d, --description <desc>', 'Description for the translation key')\n .option('-p, --project <id>', 'Project ID')\n .option('-a, --api-key <key>', 'API key')\n .option('--api-url <url>', 'API URL', 'https://api.lezu.app')\n .option('--auto', 'Auto-translate to all enabled languages')\n .action(async (options) => {\n try {\n // Load configuration\n const config = loadConfig(options)\n \n // Validate configuration\n const errors = validateConfig(config)\n if (errors.length > 0) {\n console.error(chalk.red('Configuration errors:'))\n errors.forEach(error => console.error(chalk.red(` • ${error}`)))\n process.exit(1)\n }\n \n // Collect translations from language options\n const translations: Record<string, string> = {}\n const languageOptions = ['en', 'es', 'fr', 'de', 'nl', 'it', 'pt', 'ru', 'ja', 'ko', 'zh', 'ar']\n \n languageOptions.forEach(lang => {\n if (options[lang]) {\n translations[lang] = options[lang]\n }\n })\n \n // If --value is provided without specific language, use project's source language\n if (options.value && Object.keys(translations).length === 0) {\n // We'll need to get the project info to determine source language\n const spinner = ora('Getting project information...').start()\n const client = new LezuApiClient(config)\n \n try {\n const { project } = await client.getProject()\n const sourceLanguage = project.source_language || 'en'\n translations[sourceLanguage] = options.value\n spinner.succeed(`Using ${sourceLanguage} as source language`)\n } catch (error) {\n spinner.fail('Failed to get project information')\n translations['en'] = options.value // fallback to English\n }\n }\n \n await addTranslationKey(config, {\n key: options.key,\n description: options.description,\n translations,\n auto: options.auto,\n })\n \n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n \n return command\n}\n\ninterface AddKeyOptions {\n key: string\n description?: string\n translations: Record<string, string>\n auto?: boolean\n}\n\nasync function addTranslationKey(config: Config, options: AddKeyOptions) {\n const spinner = ora('Adding translation key...').start()\n \n try {\n const client = new LezuApiClient(config)\n \n // Add the key with translations\n const response = await client.addTranslationKey(options.key, options.translations)\n \n spinner.succeed('Translation key added successfully!')\n \n // Show summary\n console.log(chalk.green('\\n✨ Key added:'))\n console.log(chalk.gray(` • Key: ${options.key}`))\n if (options.description) {\n console.log(chalk.gray(` • Description: ${options.description}`))\n }\n console.log(chalk.gray(` • Languages: ${Object.keys(options.translations).join(', ')}`))\n \n // Show translations\n if (Object.keys(options.translations).length > 0) {\n console.log(chalk.gray('\\n Translations:'))\n Object.entries(options.translations).forEach(([lang, value]) => {\n console.log(chalk.gray(` ${lang}: \"${value}\"`))\n })\n }\n \n // If auto-translate was used, show additional info\n if (options.auto) {\n console.log(chalk.cyan('\\nšŸ¤– Auto-translation was enabled. Check the dashboard to review AI-generated translations.'))\n }\n \n } catch (error) {\n spinner.fail('Failed to add translation key')\n throw error\n }\n}","import { Command } from 'commander'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport { loadConfig, validateConfig } from '../config.js'\nimport { LezuApiClient } from '../api.js'\nimport type { Config } from '../types.js'\n\nexport function createReleaseCommand() {\n const command = new Command('release')\n .description('Manage releases')\n \n // Create release subcommand\n command\n .command('create')\n .alias('new')\n .description('Create a new release')\n .option('-v, --version <version>', 'Release version (e.g., \"1.0.0\")')\n .option('-n, --name <name>', 'Release name')\n .option('-d, --description <desc>', 'Release description')\n .option('-e, --environment <env>', 'Environment', 'production')\n .option('-p, --project <id>', 'Project ID')\n .option('-a, --api-key <key>', 'API key')\n .option('--api-url <url>', 'API URL', 'https://api.lezu.app')\n .option('--reviewed-only', 'Include only reviewed translations')\n .option('--set-current', 'Set this release as the current release')\n .option('--timestamp <iso>', 'Specific timestamp for the release (ISO format)')\n .option('--languages <langs>', 'Comma-separated list of languages to include')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const config = loadConfig(options)\n const errors = validateConfig(config)\n if (errors.length > 0) {\n console.error(chalk.red('Configuration errors:'))\n errors.forEach(error => console.error(chalk.red(` • ${error}`)))\n process.exit(1)\n }\n \n await createRelease(config, options)\n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n \n // Set current release subcommand\n command\n .command('current <releaseId>')\n .description('Set a release as current')\n .option('-p, --project <id>', 'Project ID')\n .option('-a, --api-key <key>', 'API key')\n .option('--api-url <url>', 'API URL', 'https://api.lezu.app')\n .option('--json', 'Output as JSON')\n .action(async (releaseId, options) => {\n try {\n const config = loadConfig(options)\n const errors = validateConfig(config)\n if (errors.length > 0) {\n console.error(chalk.red('Configuration errors:'))\n errors.forEach(error => console.error(chalk.red(` • ${error}`)))\n process.exit(1)\n }\n \n await setCurrentRelease(config, releaseId, options)\n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n \n // List releases (alias for get releases)\n command\n .command('list')\n .alias('ls')\n .description('List all releases')\n .option('-p, --project <id>', 'Project ID')\n .option('-a, --api-key <key>', 'API key')\n .option('--api-url <url>', 'API URL', 'https://api.lezu.app')\n .option('-e, --environment <env>', 'Environment', 'production')\n .option('--json', 'Output as JSON')\n .option('--limit <n>', 'Limit number of results', '10')\n .action(async (options) => {\n try {\n const config = loadConfig(options)\n const errors = validateConfig(config)\n if (errors.length > 0) {\n console.error(chalk.red('Configuration errors:'))\n errors.forEach(error => console.error(chalk.red(` • ${error}`)))\n process.exit(1)\n }\n \n // Import and use the getReleases function from get command\n const { getReleases } = await import('./get.js')\n await getReleases(config, options)\n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n \n return command\n}\n\nasync function createRelease(config: Config, options: any) {\n const spinner = ora('Creating release...').start()\n \n try {\n const client = new LezuApiClient(config)\n \n // Parse languages if provided\n const languages = options.languages ? options.languages.split(',').map((l: string) => l.trim()) : undefined\n \n // Validate timestamp if provided\n let timestamp\n if (options.timestamp) {\n try {\n timestamp = new Date(options.timestamp).toISOString()\n } catch (error) {\n throw new Error('Invalid timestamp format. Use ISO format (e.g., 2023-12-01T10:00:00Z)')\n }\n }\n \n const releaseData = {\n environment: options.environment,\n version: options.version,\n name: options.name,\n description: options.description,\n reviewedOnly: options.reviewedOnly || false,\n setAsCurrent: options.setCurrent || false,\n timestamp,\n languages,\n }\n \n spinner.text = 'Creating release and generating bundles...'\n const response = await client.createRelease(releaseData)\n \n spinner.succeed('Release created successfully!')\n \n if (options.json) {\n console.log(JSON.stringify(response, null, 2))\n return\n }\n \n console.log(chalk.green('\\nšŸš€ Release Created:'))\n console.log(` ID: ${response.release.id}`)\n console.log(` Version: ${response.release.version}`)\n if (response.release.name) {\n console.log(` Name: ${response.release.name}`)\n }\n if (response.release.description) {\n console.log(` Description: ${response.release.description}`)\n }\n console.log(` Environment: ${response.release.environment?.name || options.environment}`)\n console.log(` Reviewed Only: ${response.release.reviewed_only ? 'Yes' : 'No'}`)\n console.log(` Is Current: ${response.release.is_current ? 'Yes' : 'No'}`)\n console.log(` Created: ${new Date(response.release.created_at).toLocaleString()}`)\n \n // Show bundle information\n if (response.release.artifacts && response.release.artifacts.length > 0) {\n console.log(chalk.green('\\nšŸ“¦ Bundles Generated:'))\n response.release.artifacts.forEach((artifact: any) => {\n const sizeKB = Math.round(artifact.file_size / 1024)\n console.log(` • ${artifact.language_code}: ${sizeKB}KB`)\n })\n console.log(chalk.gray(`\\nTotal: ${response.release.artifacts.length} language bundles`))\n }\n \n console.log(chalk.cyan('\\nšŸ’” You can now use this release with:'))\n console.log(chalk.gray(` npx lezu load --release ${response.release.id}`))\n \n if (response.release.is_current) {\n console.log(chalk.green('\\n✨ This release is now set as current!'))\n }\n \n } catch (error) {\n spinner.fail('Failed to create release')\n throw error\n }\n}\n\nasync function setCurrentRelease(config: Config, releaseId: string, options: any) {\n const spinner = ora('Setting release as current...').start()\n \n try {\n const response = await fetch(`${config.apiUrl}/v1/releases/${releaseId}/current`, {\n method: 'PUT',\n headers: {\n 'Authorization': `Bearer ${config.apiKey}`,\n 'Content-Type': 'application/json',\n },\n })\n \n if (!response.ok) {\n const error = await response.text()\n throw new Error(`Failed to set current release: ${response.status} ${response.statusText}\\n${error}`)\n }\n \n const data = await response.json()\n \n spinner.succeed('Release set as current!')\n \n if (options.json) {\n console.log(JSON.stringify(data, null, 2))\n return\n }\n \n console.log(chalk.green('\\n✨ Release Updated:'))\n console.log(` Release ID: ${releaseId}`)\n console.log(' Status: Now set as current release')\n \n console.log(chalk.cyan('\\nšŸ’” All new bundle requests will now use this release'))\n \n } catch (error) {\n spinner.fail('Failed to set release as current')\n throw error\n }\n}","import * as readline from 'readline'\nimport { stdin as input, stdout as output } from 'process'\nimport { promisify } from 'util'\nimport chalk from 'chalk'\nimport { loadConfig } from './config.js'\nimport type { Config } from './types.js'\n\nexport async function interactiveMode(initialConfig: Partial<Config>): Promise<void> {\n const rl = readline.createInterface({ input, output })\n const question = promisify(rl.question).bind(rl)\n\n console.log(chalk.cyan('šŸŒ Lezu CLI - Interactive Mode\\n'))\n console.log(chalk.gray('What would you like to do?\\n'))\n\n try {\n // Show available commands\n console.log('Available commands:')\n console.log(chalk.green('1) load') + chalk.gray(' - Download translation files'))\n console.log(chalk.green('2) add') + chalk.gray(' - Add a new translation key'))\n console.log(chalk.green('3) get') + chalk.gray(' - Get project information'))\n console.log(chalk.green('4) release') + chalk.gray(' - Manage releases'))\n console.log()\n\n const commandChoice = await question(chalk.bold('Choose a command (1-4): '))\n \n let command: string\n switch (commandChoice) {\n case '1':\n command = 'load'\n break\n case '2':\n command = 'add'\n break\n case '3':\n command = 'get'\n break\n case '4':\n command = 'release'\n break\n default:\n console.log(chalk.yellow('Invalid choice, defaulting to load'))\n command = 'load'\n }\n\n console.log(chalk.cyan(`\\nšŸ“‹ Setting up ${command} command...\\n`))\n\n // Get basic configuration\n const projectId = await rl.question(\n chalk.bold('Project ID') + \n (initialConfig.projectId ? chalk.gray(` (${initialConfig.projectId}): `) : ': ')\n ) || initialConfig.projectId\n\n if (!projectId) {\n throw new Error('Project ID is required')\n }\n\n const apiKey = await rl.question(\n chalk.bold('API Key') + \n (initialConfig.apiKey ? chalk.gray(' (current key will be used): ') : ': ')\n ) || initialConfig.apiKey\n\n if (!apiKey) {\n throw new Error('API Key is required')\n }\n\n const config = loadConfig({ projectId, apiKey, ...initialConfig })\n\n // Handle specific command configurations\n switch (command) {\n case 'load':\n await configureLoadCommand(rl, config)\n break\n case 'add':\n await configureAddCommand(rl, config)\n break\n case 'get':\n await configureGetCommand(rl, config)\n break\n case 'release':\n await configureReleaseCommand(rl, config)\n break\n }\n\n } catch (error) {\n throw error\n } finally {\n rl.close()\n }\n}\n\nasync function configureLoadCommand(rl: any, config: Config): Promise<void> {\n const { syncTranslations } = await import('./commands/load.js')\n \n console.log(chalk.bold('\\nLoad Configuration:'))\n \n // Destination\n const dest = await rl.question(\n chalk.gray(`Destination folder (${config.dest || './src/i18n'}): `)\n ) || config.dest || './src/i18n'\n\n // Format\n console.log(chalk.gray('\\nOutput format:'))\n console.log('1) JSON (default)')\n console.log('2) JavaScript (ES modules)')\n console.log('3) TypeScript')\n console.log('4) YAML')\n \n const formatChoice = await rl.question(chalk.gray('Choice (1-4): ')) || '1'\n const formatMap: Record<string, 'json' | 'js' | 'ts' | 'yaml'> = {\n '1': 'json',\n '2': 'js',\n '3': 'ts',\n '4': 'yaml'\n }\n const format = formatMap[formatChoice] || 'json'\n\n // Environment\n const environment = await rl.question(\n chalk.gray(`Environment (${config.environment || 'production'}): `)\n ) || config.environment || 'production'\n\n // Languages\n const languages = await rl.question(\n chalk.gray('Specific languages (comma-separated, leave empty for all): ')\n )\n\n const finalConfig = {\n ...config,\n dest,\n format,\n environment,\n languages: languages ? languages.split(',').map(l => l.trim()) : undefined\n }\n\n console.log(chalk.green('\\nšŸš€ Starting translation sync...'))\n \n // Import and execute the sync\n const { syncTranslations: sync } = await import('./commands/load.js')\n await sync(finalConfig)\n}\n\nasync function configureAddCommand(rl: any, config: Config): Promise<void> {\n console.log(chalk.bold('\\nAdd Translation Key:'))\n \n const key = await rl.question(chalk.bold('Translation key (e.g., \"common.save\"): '))\n if (!key) {\n throw new Error('Translation key is required')\n }\n\n const description = await rl.question(chalk.gray('Description (optional): '))\n\n console.log(chalk.gray('\\nDo you want to:'))\n console.log('1) Provide translations manually')\n console.log('2) Auto-translate from source language')\n \n const choice = await rl.question(chalk.gray('Choice (1-2): ')) || '1'\n\n let translations: Record<string, string> = {}\n let auto = false\n\n if (choice === '2') {\n auto = true\n const sourceValue = await rl.question(chalk.bold('Source language value: '))\n if (sourceValue) {\n // We'll determine the source language from the project\n translations.en = sourceValue // Default fallback\n }\n } else {\n console.log(chalk.gray('\\nEnter translations (press Enter to skip):'))\n const languages = ['en', 'es', 'fr', 'de', 'nl']\n \n for (const lang of languages) {\n const value = await rl.question(chalk.gray(`${lang}: `))\n if (value) {\n translations[lang] = value\n }\n }\n }\n\n console.log(chalk.green('\\nšŸš€ Adding translation key...'))\n\n // Import and execute the add command\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n \n try {\n await client.addTranslationKey(key, translations)\n console.log(chalk.green('āœ… Translation key added successfully!'))\n } catch (error) {\n console.error(chalk.red('āŒ Failed to add translation key:'), error)\n }\n}\n\nasync function configureGetCommand(rl: any, config: Config): Promise<void> {\n console.log(chalk.bold('\\nGet Information:'))\n console.log('1) Project info')\n console.log('2) Languages')\n console.log('3) Releases')\n \n const choice = await rl.question(chalk.gray('What to get (1-3): ')) || '1'\n \n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n\n try {\n switch (choice) {\n case '1':\n const project = await client.getProject()\n console.log(chalk.green('\\nšŸ“‹ Project Information:'))\n console.log(` Name: ${project.project.name}`)\n console.log(` Key: ${project.project.key}`)\n console.log(` Source Language: ${project.project.source_language}`)\n break\n \n case '2':\n const languages = await client.getLanguages()\n console.log(chalk.green('\\nšŸŒ Languages:'))\n languages.languages?.forEach((lang: any) => {\n const status = lang.enabled ? 'āœ…' : 'āŒ'\n console.log(` ${status} ${lang.language?.name || lang.language_code}`)\n })\n break\n \n case '3':\n const releases = await client.getReleases()\n console.log(chalk.green('\\nšŸš€ Recent Releases:'))\n releases.releases?.slice(0, 5).forEach((release: any) => {\n const current = release.is_current ? ' [CURRENT]' : ''\n console.log(` • ${release.version}${current}`)\n })\n break\n }\n } catch (error) {\n console.error(chalk.red('āŒ Failed to get information:'), error)\n }\n}\n\nasync function configureReleaseCommand(rl: any, config: Config): Promise<void> {\n console.log(chalk.bold('\\nRelease Management:'))\n console.log('1) Create new release')\n console.log('2) List releases')\n \n const choice = await rl.question(chalk.gray('Choice (1-2): ')) || '1'\n\n if (choice === '1') {\n const version = await rl.question(chalk.bold('Version (e.g., \"1.0.0\"): '))\n const name = await rl.question(chalk.gray('Name (optional): '))\n const description = await rl.question(chalk.gray('Description (optional): '))\n \n const setCurrent = await rl.question(chalk.gray('Set as current release? (y/n): '))\n\n console.log(chalk.green('\\nšŸš€ Creating release...'))\n\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n \n try {\n const release = await client.createRelease({\n version,\n name,\n description,\n reviewedOnly: false,\n })\n \n if (setCurrent?.toLowerCase() === 'y') {\n // Set as current\n await fetch(`${config.apiUrl}/v1/releases/${release.release.id}/current`, {\n method: 'PUT',\n headers: {\n 'Authorization': `Bearer ${config.apiKey}`,\n },\n })\n }\n \n console.log(chalk.green('āœ… Release created successfully!'))\n console.log(` ID: ${release.release.id}`)\n console.log(` Version: ${release.release.version}`)\n } catch (error) {\n console.error(chalk.red('āŒ Failed to create release:'), error)\n }\n \n } else {\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n \n try {\n const releases = await client.getReleases()\n console.log(chalk.green('\\nšŸš€ Releases:'))\n releases.releases?.forEach((release: any, index: number) => {\n const current = release.is_current ? ' [CURRENT]' : ''\n console.log(` ${index + 1}. ${release.version}${current}`)\n })\n } catch (error) {\n console.error(chalk.red('āŒ Failed to list releases:'), error)\n }\n }\n}"],"mappings":"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","names":["chalk","Command","chalk","ora","Command","chalk","ora","chalk","chalk","LezuApiClient","version","chalk"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/commands/add.ts","../src/commands/release.ts","../src/interactive.ts"],"sourcesContent":["import { program } from 'commander'\nimport chalk from 'chalk'\nimport { createLoadCommand } from './commands/load.js'\nimport { createAddCommand } from './commands/add.js'\nimport { createGetCommand } from './commands/get.js'\nimport { createReleaseCommand } from './commands/release.js'\nimport { interactiveMode } from './interactive.js'\nimport { loadConfig } from './config.js'\n\n// Version from package.json\nconst version = '0.0.20'\n\nprogram\n .name('lezu')\n .description('CLI tool for managing translations with Lezu')\n .version(version)\n\n// Add subcommands\nprogram.addCommand(createLoadCommand())\nprogram.addCommand(createAddCommand())\nprogram.addCommand(createGetCommand())\nprogram.addCommand(createReleaseCommand())\n\n// Handle case when no command is provided - run interactive mode\nprogram.action(async () => {\n console.log(chalk.blue('šŸ‘‹ Welcome to Lezu CLI!'))\n console.log()\n \n try {\n // Load initial config from file/env for defaults\n const initialConfig = loadConfig({})\n await interactiveMode(initialConfig)\n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n})\n\n// Show help when no arguments provided\nif (process.argv.length <= 2) {\n // Run interactive mode\n program.action(() => {})\n} else {\n // Parse commands normally\n program.parse()\n}","import { Command } from 'commander'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport { loadConfig, validateConfig } from '../config.js'\nimport { LezuApiClient } from '../api.js'\nimport type { Config } from '../types.js'\n\nexport function createAddCommand() {\n const command = new Command('add')\n .description('Add a new translation key with values')\n .requiredOption('-k, --key <key>', 'Translation key (e.g., \"common.save\")')\n .option('-v, --value <value>', 'Value for the source language')\n .option('--en <value>', 'English translation')\n .option('--es <value>', 'Spanish translation')\n .option('--fr <value>', 'French translation')\n .option('--de <value>', 'German translation')\n .option('--nl <value>', 'Dutch translation')\n .option('--it <value>', 'Italian translation')\n .option('--pt <value>', 'Portuguese translation')\n .option('--ru <value>', 'Russian translation')\n .option('--ja <value>', 'Japanese translation')\n .option('--ko <value>', 'Korean translation')\n .option('--zh <value>', 'Chinese translation')\n .option('--ar <value>', 'Arabic translation')\n .option('-d, --description <desc>', 'Description for the translation key')\n .option('-p, --project <id>', 'Project ID')\n .option('-a, --api-key <key>', 'API key')\n .option('--api-url <url>', 'API URL', 'https://api.lezu.app')\n .option('--auto', 'Auto-translate to all enabled languages')\n .action(async (options) => {\n try {\n // Load configuration\n const config = loadConfig(options)\n \n // Validate configuration\n const errors = validateConfig(config)\n if (errors.length > 0) {\n console.error(chalk.red('Configuration errors:'))\n errors.forEach(error => console.error(chalk.red(` • ${error}`)))\n process.exit(1)\n }\n \n // Collect translations from language options\n const translations: Record<string, string> = {}\n const languageOptions = ['en', 'es', 'fr', 'de', 'nl', 'it', 'pt', 'ru', 'ja', 'ko', 'zh', 'ar']\n \n languageOptions.forEach(lang => {\n if (options[lang]) {\n translations[lang] = options[lang]\n }\n })\n \n // If --value is provided without specific language, use project's source language\n if (options.value && Object.keys(translations).length === 0) {\n // We'll need to get the project info to determine source language\n const spinner = ora('Getting project information...').start()\n const client = new LezuApiClient(config)\n \n try {\n const { project } = await client.getProject()\n const sourceLanguage = project.source_language || 'en'\n translations[sourceLanguage] = options.value\n spinner.succeed(`Using ${sourceLanguage} as source language`)\n } catch (error) {\n spinner.fail('Failed to get project information')\n translations['en'] = options.value // fallback to English\n }\n }\n \n await addTranslationKey(config, {\n key: options.key,\n description: options.description,\n translations,\n auto: options.auto,\n })\n \n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n \n return command\n}\n\ninterface AddKeyOptions {\n key: string\n description?: string\n translations: Record<string, string>\n auto?: boolean\n}\n\nasync function addTranslationKey(config: Config, options: AddKeyOptions) {\n const spinner = ora('Adding translation key...').start()\n \n try {\n const client = new LezuApiClient(config)\n \n // Add the key with translations\n const response = await client.addTranslationKey(options.key, options.translations)\n \n spinner.succeed('Translation key added successfully!')\n \n // Show summary\n console.log(chalk.green('\\n✨ Key added:'))\n console.log(chalk.gray(` • Key: ${options.key}`))\n if (options.description) {\n console.log(chalk.gray(` • Description: ${options.description}`))\n }\n console.log(chalk.gray(` • Languages: ${Object.keys(options.translations).join(', ')}`))\n \n // Show translations\n if (Object.keys(options.translations).length > 0) {\n console.log(chalk.gray('\\n Translations:'))\n Object.entries(options.translations).forEach(([lang, value]) => {\n console.log(chalk.gray(` ${lang}: \"${value}\"`))\n })\n }\n \n // If auto-translate was used, show additional info\n if (options.auto) {\n console.log(chalk.cyan('\\nšŸ¤– Auto-translation was enabled. Check the dashboard to review AI-generated translations.'))\n }\n \n } catch (error) {\n spinner.fail('Failed to add translation key')\n throw error\n }\n}","import { Command } from 'commander'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport { loadConfig, validateConfig } from '../config.js'\nimport { LezuApiClient } from '../api.js'\nimport type { Config } from '../types.js'\n\nexport function createReleaseCommand() {\n const command = new Command('release')\n .description('Manage releases')\n \n // Create release subcommand\n command\n .command('create')\n .alias('new')\n .description('Create a new release')\n .option('-v, --version <version>', 'Release version (e.g., \"1.0.0\")')\n .option('-n, --name <name>', 'Release name')\n .option('-d, --description <desc>', 'Release description')\n .option('-e, --environment <env>', 'Environment', 'production')\n .option('-p, --project <id>', 'Project ID')\n .option('-a, --api-key <key>', 'API key')\n .option('--api-url <url>', 'API URL', 'https://api.lezu.app')\n .option('--reviewed-only', 'Include only reviewed translations')\n .option('--set-current', 'Set this release as the current release')\n .option('--timestamp <iso>', 'Specific timestamp for the release (ISO format)')\n .option('--languages <langs>', 'Comma-separated list of languages to include')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const config = loadConfig(options)\n const errors = validateConfig(config)\n if (errors.length > 0) {\n console.error(chalk.red('Configuration errors:'))\n errors.forEach(error => console.error(chalk.red(` • ${error}`)))\n process.exit(1)\n }\n \n await createRelease(config, options)\n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n \n // Set current release subcommand\n command\n .command('current <releaseId>')\n .description('Set a release as current')\n .option('-p, --project <id>', 'Project ID')\n .option('-a, --api-key <key>', 'API key')\n .option('--api-url <url>', 'API URL', 'https://api.lezu.app')\n .option('--json', 'Output as JSON')\n .action(async (releaseId, options) => {\n try {\n const config = loadConfig(options)\n const errors = validateConfig(config)\n if (errors.length > 0) {\n console.error(chalk.red('Configuration errors:'))\n errors.forEach(error => console.error(chalk.red(` • ${error}`)))\n process.exit(1)\n }\n \n await setCurrentRelease(config, releaseId, options)\n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n \n // List releases (alias for get releases)\n command\n .command('list')\n .alias('ls')\n .description('List all releases')\n .option('-p, --project <id>', 'Project ID')\n .option('-a, --api-key <key>', 'API key')\n .option('--api-url <url>', 'API URL', 'https://api.lezu.app')\n .option('-e, --environment <env>', 'Environment', 'production')\n .option('--json', 'Output as JSON')\n .option('--limit <n>', 'Limit number of results', '10')\n .action(async (options) => {\n try {\n const config = loadConfig(options)\n const errors = validateConfig(config)\n if (errors.length > 0) {\n console.error(chalk.red('Configuration errors:'))\n errors.forEach(error => console.error(chalk.red(` • ${error}`)))\n process.exit(1)\n }\n \n // Import and use the getReleases function from get command\n const { getReleases } = await import('./get.js')\n await getReleases(config, options)\n } catch (error) {\n console.error(chalk.red('\\nāŒ Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n \n return command\n}\n\nasync function createRelease(config: Config, options: any) {\n const spinner = ora('Creating release...').start()\n \n try {\n const client = new LezuApiClient(config)\n \n // Parse languages if provided\n const languages = options.languages ? options.languages.split(',').map((l: string) => l.trim()) : undefined\n \n // Validate timestamp if provided\n let timestamp\n if (options.timestamp) {\n try {\n timestamp = new Date(options.timestamp).toISOString()\n } catch (error) {\n throw new Error('Invalid timestamp format. Use ISO format (e.g., 2023-12-01T10:00:00Z)')\n }\n }\n \n const releaseData = {\n environment: options.environment,\n version: options.version,\n name: options.name,\n description: options.description,\n reviewedOnly: options.reviewedOnly || false,\n setAsCurrent: options.setCurrent || false,\n timestamp,\n languages,\n }\n \n spinner.text = 'Creating release and generating bundles...'\n const response = await client.createRelease(releaseData)\n \n spinner.succeed('Release created successfully!')\n \n if (options.json) {\n console.log(JSON.stringify(response, null, 2))\n return\n }\n \n console.log(chalk.green('\\nšŸš€ Release Created:'))\n console.log(` ID: ${response.release.id}`)\n console.log(` Version: ${response.release.version}`)\n if (response.release.name) {\n console.log(` Name: ${response.release.name}`)\n }\n if (response.release.description) {\n console.log(` Description: ${response.release.description}`)\n }\n console.log(` Environment: ${response.release.environment?.name || options.environment}`)\n console.log(` Reviewed Only: ${response.release.reviewed_only ? 'Yes' : 'No'}`)\n console.log(` Is Current: ${response.release.is_current ? 'Yes' : 'No'}`)\n console.log(` Created: ${new Date(response.release.created_at).toLocaleString()}`)\n \n // Show bundle information\n if (response.release.artifacts && response.release.artifacts.length > 0) {\n console.log(chalk.green('\\nšŸ“¦ Bundles Generated:'))\n response.release.artifacts.forEach((artifact: any) => {\n const sizeKB = Math.round(artifact.file_size / 1024)\n console.log(` • ${artifact.language_code}: ${sizeKB}KB`)\n })\n console.log(chalk.gray(`\\nTotal: ${response.release.artifacts.length} language bundles`))\n }\n \n console.log(chalk.cyan('\\nšŸ’” You can now use this release with:'))\n console.log(chalk.gray(` npx lezu load --release ${response.release.id}`))\n \n if (response.release.is_current) {\n console.log(chalk.green('\\n✨ This release is now set as current!'))\n }\n \n } catch (error) {\n spinner.fail('Failed to create release')\n throw error\n }\n}\n\nasync function setCurrentRelease(config: Config, releaseId: string, options: any) {\n const spinner = ora('Setting release as current...').start()\n \n try {\n const response = await fetch(`${config.apiUrl}/v1/releases/${releaseId}/current`, {\n method: 'PUT',\n headers: {\n 'Authorization': `Bearer ${config.apiKey}`,\n 'Content-Type': 'application/json',\n },\n })\n \n if (!response.ok) {\n const error = await response.text()\n throw new Error(`Failed to set current release: ${response.status} ${response.statusText}\\n${error}`)\n }\n \n const data = await response.json()\n \n spinner.succeed('Release set as current!')\n \n if (options.json) {\n console.log(JSON.stringify(data, null, 2))\n return\n }\n \n console.log(chalk.green('\\n✨ Release Updated:'))\n console.log(` Release ID: ${releaseId}`)\n console.log(' Status: Now set as current release')\n \n console.log(chalk.cyan('\\nšŸ’” All new bundle requests will now use this release'))\n \n } catch (error) {\n spinner.fail('Failed to set release as current')\n throw error\n }\n}","import * as readline from 'readline'\nimport { stdin as input, stdout as output } from 'process'\nimport { promisify } from 'util'\nimport chalk from 'chalk'\nimport { loadConfig } from './config.js'\nimport type { Config } from './types.js'\n\nexport async function interactiveMode(initialConfig: Partial<Config>): Promise<void> {\n const rl = readline.createInterface({ input, output })\n const question = promisify(rl.question).bind(rl)\n\n console.log(chalk.cyan('šŸŒ Lezu CLI - Interactive Mode\\n'))\n console.log(chalk.gray('What would you like to do?\\n'))\n\n try {\n // Show available commands\n console.log('Available commands:')\n console.log(chalk.green('1) load') + chalk.gray(' - Download translation files'))\n console.log(chalk.green('2) add') + chalk.gray(' - Add a new translation key'))\n console.log(chalk.green('3) get') + chalk.gray(' - Get project information'))\n console.log(chalk.green('4) release') + chalk.gray(' - Manage releases'))\n console.log()\n\n const commandChoice = await question(chalk.bold('Choose a command (1-4): '))\n \n let command: string\n switch (commandChoice) {\n case '1':\n command = 'load'\n break\n case '2':\n command = 'add'\n break\n case '3':\n command = 'get'\n break\n case '4':\n command = 'release'\n break\n default:\n console.log(chalk.yellow('Invalid choice, defaulting to load'))\n command = 'load'\n }\n\n console.log(chalk.cyan(`\\nšŸ“‹ Setting up ${command} command...\\n`))\n\n // Get basic configuration\n const projectId = await rl.question(\n chalk.bold('Project ID') + \n (initialConfig.projectId ? chalk.gray(` (${initialConfig.projectId}): `) : ': ')\n ) || initialConfig.projectId\n\n if (!projectId) {\n throw new Error('Project ID is required')\n }\n\n const apiKey = await rl.question(\n chalk.bold('API Key') + \n (initialConfig.apiKey ? chalk.gray(' (current key will be used): ') : ': ')\n ) || initialConfig.apiKey\n\n if (!apiKey) {\n throw new Error('API Key is required')\n }\n\n const config = loadConfig({ projectId, apiKey, ...initialConfig })\n\n // Handle specific command configurations\n switch (command) {\n case 'load':\n await configureLoadCommand(rl, config)\n break\n case 'add':\n await configureAddCommand(rl, config)\n break\n case 'get':\n await configureGetCommand(rl, config)\n break\n case 'release':\n await configureReleaseCommand(rl, config)\n break\n }\n\n } catch (error) {\n throw error\n } finally {\n rl.close()\n }\n}\n\nasync function configureLoadCommand(rl: any, config: Config): Promise<void> {\n const { syncTranslations } = await import('./commands/load.js')\n \n console.log(chalk.bold('\\nLoad Configuration:'))\n \n // Destination\n const dest = await rl.question(\n chalk.gray(`Destination folder (${config.dest || './src/i18n'}): `)\n ) || config.dest || './src/i18n'\n\n // Format\n console.log(chalk.gray('\\nOutput format:'))\n console.log('1) JSON (default)')\n console.log('2) JavaScript (ES modules)')\n console.log('3) TypeScript')\n console.log('4) YAML')\n \n const formatChoice = await rl.question(chalk.gray('Choice (1-4): ')) || '1'\n const formatMap: Record<string, 'json' | 'js' | 'ts' | 'yaml'> = {\n '1': 'json',\n '2': 'js',\n '3': 'ts',\n '4': 'yaml'\n }\n const format = formatMap[formatChoice] || 'json'\n\n // Environment\n const environment = await rl.question(\n chalk.gray(`Environment (${config.environment || 'production'}): `)\n ) || config.environment || 'production'\n\n // Languages\n const languages = await rl.question(\n chalk.gray('Specific languages (comma-separated, leave empty for all): ')\n )\n\n const finalConfig = {\n ...config,\n dest,\n format,\n environment,\n languages: languages ? languages.split(',').map(l => l.trim()) : undefined\n }\n\n console.log(chalk.green('\\nšŸš€ Starting translation sync...'))\n \n // Import and execute the sync\n const { syncTranslations: sync } = await import('./commands/load.js')\n await sync(finalConfig)\n}\n\nasync function configureAddCommand(rl: any, config: Config): Promise<void> {\n console.log(chalk.bold('\\nAdd Translation Key:'))\n \n const key = await rl.question(chalk.bold('Translation key (e.g., \"common.save\"): '))\n if (!key) {\n throw new Error('Translation key is required')\n }\n\n const description = await rl.question(chalk.gray('Description (optional): '))\n\n console.log(chalk.gray('\\nDo you want to:'))\n console.log('1) Provide translations manually')\n console.log('2) Auto-translate from source language')\n \n const choice = await rl.question(chalk.gray('Choice (1-2): ')) || '1'\n\n let translations: Record<string, string> = {}\n let auto = false\n\n if (choice === '2') {\n auto = true\n const sourceValue = await rl.question(chalk.bold('Source language value: '))\n if (sourceValue) {\n // We'll determine the source language from the project\n translations.en = sourceValue // Default fallback\n }\n } else {\n console.log(chalk.gray('\\nEnter translations (press Enter to skip):'))\n const languages = ['en', 'es', 'fr', 'de', 'nl']\n \n for (const lang of languages) {\n const value = await rl.question(chalk.gray(`${lang}: `))\n if (value) {\n translations[lang] = value\n }\n }\n }\n\n console.log(chalk.green('\\nšŸš€ Adding translation key...'))\n\n // Import and execute the add command\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n \n try {\n await client.addTranslationKey(key, translations)\n console.log(chalk.green('āœ… Translation key added successfully!'))\n } catch (error) {\n console.error(chalk.red('āŒ Failed to add translation key:'), error)\n }\n}\n\nasync function configureGetCommand(rl: any, config: Config): Promise<void> {\n console.log(chalk.bold('\\nGet Information:'))\n console.log('1) Project info')\n console.log('2) Languages')\n console.log('3) Releases')\n \n const choice = await rl.question(chalk.gray('What to get (1-3): ')) || '1'\n \n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n\n try {\n switch (choice) {\n case '1':\n const project = await client.getProject()\n console.log(chalk.green('\\nšŸ“‹ Project Information:'))\n console.log(` Name: ${project.project.name}`)\n console.log(` Key: ${project.project.key}`)\n console.log(` Source Language: ${project.project.source_language}`)\n break\n \n case '2':\n const languages = await client.getLanguages()\n console.log(chalk.green('\\nšŸŒ Languages:'))\n languages.languages?.forEach((lang: any) => {\n const status = lang.enabled ? 'āœ…' : 'āŒ'\n console.log(` ${status} ${lang.language?.name || lang.language_code}`)\n })\n break\n \n case '3':\n const releases = await client.getReleases()\n console.log(chalk.green('\\nšŸš€ Recent Releases:'))\n releases.releases?.slice(0, 5).forEach((release: any) => {\n const current = release.is_current ? ' [CURRENT]' : ''\n console.log(` • ${release.version}${current}`)\n })\n break\n }\n } catch (error) {\n console.error(chalk.red('āŒ Failed to get information:'), error)\n }\n}\n\nasync function configureReleaseCommand(rl: any, config: Config): Promise<void> {\n console.log(chalk.bold('\\nRelease Management:'))\n console.log('1) Create new release')\n console.log('2) List releases')\n \n const choice = await rl.question(chalk.gray('Choice (1-2): ')) || '1'\n\n if (choice === '1') {\n const version = await rl.question(chalk.bold('Version (e.g., \"1.0.0\"): '))\n const name = await rl.question(chalk.gray('Name (optional): '))\n const description = await rl.question(chalk.gray('Description (optional): '))\n \n const setCurrent = await rl.question(chalk.gray('Set as current release? (y/n): '))\n\n console.log(chalk.green('\\nšŸš€ Creating release...'))\n\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n \n try {\n const release = await client.createRelease({\n version,\n name,\n description,\n reviewedOnly: false,\n })\n \n if (setCurrent?.toLowerCase() === 'y') {\n // Set as current\n await fetch(`${config.apiUrl}/v1/releases/${release.release.id}/current`, {\n method: 'PUT',\n headers: {\n 'Authorization': `Bearer ${config.apiKey}`,\n },\n })\n }\n \n console.log(chalk.green('āœ… Release created successfully!'))\n console.log(` ID: ${release.release.id}`)\n console.log(` Version: ${release.release.version}`)\n } catch (error) {\n console.error(chalk.red('āŒ Failed to create release:'), error)\n }\n \n } else {\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n \n try {\n const releases = await client.getReleases()\n console.log(chalk.green('\\nšŸš€ Releases:'))\n releases.releases?.forEach((release: any, index: number) => {\n const current = release.is_current ? ' [CURRENT]' : ''\n console.log(` ${index + 1}. ${release.version}${current}`)\n })\n } catch (error) {\n console.error(chalk.red('āŒ Failed to list releases:'), error)\n }\n }\n}"],"mappings":"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","names":["chalk","Command","chalk","ora","Command","chalk","ora","chalk","chalk","LezuApiClient","version","chalk"]}
package/package.json CHANGED
@@ -1,8 +1,10 @@
1
1
  {
2
2
  "name": "lezu",
3
- "version": "0.0.19",
3
+ "version": "0.0.20",
4
4
  "description": "CLI tool for pulling translations from Lezu",
5
- "bin": "./bin/lezu.js",
5
+ "bin": {
6
+ "lezu": "./bin/lezu.js"
7
+ },
6
8
  "type": "module",
7
9
  "scripts": {
8
10
  "build": "tsup",