lezu 0.0.27 → 0.0.28
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 +9 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -258,8 +258,8 @@ async function interactiveMode(initialConfig) {
|
|
|
258
258
|
}
|
|
259
259
|
const projectId = await text({
|
|
260
260
|
message: "Project ID",
|
|
261
|
-
placeholder:
|
|
262
|
-
|
|
261
|
+
placeholder: "Enter your project ID",
|
|
262
|
+
initialValue: initialConfig.projectId || "",
|
|
263
263
|
validate: (value) => {
|
|
264
264
|
if (!value) return "Project ID is required";
|
|
265
265
|
}
|
|
@@ -270,8 +270,8 @@ async function interactiveMode(initialConfig) {
|
|
|
270
270
|
}
|
|
271
271
|
const apiKey = await text({
|
|
272
272
|
message: "API Key",
|
|
273
|
-
placeholder:
|
|
274
|
-
|
|
273
|
+
placeholder: "Enter your API key",
|
|
274
|
+
initialValue: initialConfig.apiKey || "",
|
|
275
275
|
validate: (value) => {
|
|
276
276
|
if (!value) return "API Key is required";
|
|
277
277
|
}
|
|
@@ -325,8 +325,8 @@ async function interactiveMode(initialConfig) {
|
|
|
325
325
|
async function configureLoadCommand(config) {
|
|
326
326
|
const dest = await text({
|
|
327
327
|
message: "Destination folder",
|
|
328
|
-
placeholder:
|
|
329
|
-
|
|
328
|
+
placeholder: "./src/i18n",
|
|
329
|
+
initialValue: config.dest || "./src/i18n"
|
|
330
330
|
});
|
|
331
331
|
if (isCancel(dest)) {
|
|
332
332
|
cancel("Operation cancelled");
|
|
@@ -347,8 +347,8 @@ async function configureLoadCommand(config) {
|
|
|
347
347
|
}
|
|
348
348
|
const environment = await text({
|
|
349
349
|
message: "Environment",
|
|
350
|
-
placeholder:
|
|
351
|
-
|
|
350
|
+
placeholder: "production",
|
|
351
|
+
initialValue: config.environment || "production"
|
|
352
352
|
});
|
|
353
353
|
if (isCancel(environment)) {
|
|
354
354
|
cancel("Operation cancelled");
|
|
@@ -617,7 +617,7 @@ async function configureReleaseCommand(config) {
|
|
|
617
617
|
}
|
|
618
618
|
|
|
619
619
|
// src/index.ts
|
|
620
|
-
var version = "0.0.
|
|
620
|
+
var version = "0.0.28";
|
|
621
621
|
program.name("lezu").description("CLI tool for managing translations with Lezu").version(version);
|
|
622
622
|
program.addCommand(createLoadCommand());
|
|
623
623
|
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.27'\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// If no command was provided, run interactive mode\nif (process.argv.length <= 2) {\n ;(async () => {\n console.log(chalk.blue('Welcome to Lezu CLI!'))\n console.log()\n \n try {\n const config = loadConfig({})\n await interactiveMode(config)\n } catch (error) {\n if (error instanceof Error) {\n console.error(chalk.red('\\nError:'), error.message)\n } else {\n console.error(chalk.red('\\nError:'), error)\n }\n process.exit(1)\n }\n })()\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[Success] 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[AI] 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[Tip] 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[Success] 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[Info] 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 { intro, outro, select, text, confirm, spinner, cancel, isCancel } from '@clack/prompts'\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 intro(chalk.cyan('Welcome to Lezu CLI!'))\n\n try {\n // Select command\n const command = await select({\n message: 'What would you like to do?',\n options: [\n { value: 'load', label: 'Load translation files' },\n { value: 'add', label: 'Add a new translation key' },\n { value: 'get', label: 'Get project information' },\n { value: 'release', label: 'Manage releases' },\n ],\n })\n\n if (isCancel(command)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n // Get basic configuration\n const projectId = await text({\n message: 'Project ID',\n placeholder: initialConfig.projectId || 'Enter your project ID',\n defaultValue: initialConfig.projectId,\n validate: (value) => {\n if (!value) return 'Project ID is required'\n },\n })\n\n if (isCancel(projectId)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const apiKey = await text({\n message: 'API Key',\n placeholder: initialConfig.apiKey ? '(press enter to use existing key)' : 'Enter your API key',\n defaultValue: initialConfig.apiKey,\n validate: (value) => {\n if (!value) return 'API Key is required'\n },\n })\n\n if (isCancel(apiKey)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const config = loadConfig({ projectId: projectId as string, apiKey: apiKey as string, ...initialConfig })\n\n // Validate connection before proceeding\n const validationSpinner = spinner()\n validationSpinner.start('Validating credentials...')\n \n try {\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n await client.getProject()\n validationSpinner.stop('Credentials validated!')\n } catch (error) {\n if (error instanceof Error) {\n validationSpinner.stop('Invalid credentials')\n outro(chalk.red(error.message))\n } else {\n validationSpinner.stop('Failed to validate credentials')\n outro(chalk.red('Could not connect to Lezu API'))\n }\n process.exit(1)\n }\n\n // Handle specific command configurations\n switch (command) {\n case 'load':\n await configureLoadCommand(config)\n break\n case 'add':\n await configureAddCommand(config)\n break\n case 'get':\n await configureGetCommand(config)\n break\n case 'release':\n await configureReleaseCommand(config)\n break\n }\n\n outro(chalk.green('Done!'))\n } catch (error) {\n if (error instanceof Error) {\n outro(chalk.red(error.message))\n } else {\n outro(chalk.red('An unexpected error occurred'))\n }\n process.exit(1)\n }\n}\n\nasync function configureLoadCommand(config: Config): Promise<void> {\n const dest = await text({\n message: 'Destination folder',\n placeholder: config.dest || './src/i18n',\n defaultValue: config.dest || './src/i18n',\n })\n\n if (isCancel(dest)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const format = await select({\n message: 'Output format',\n options: [\n { value: 'json', label: 'JSON' },\n { value: 'js', label: 'JavaScript (ES modules)' },\n { value: 'ts', label: 'TypeScript' },\n { value: 'yaml', label: 'YAML' },\n ],\n })\n\n if (isCancel(format)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const environment = await text({\n message: 'Environment',\n placeholder: config.environment || 'production',\n defaultValue: config.environment || 'production',\n })\n\n if (isCancel(environment)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const languages = await text({\n message: 'Specific languages (comma-separated, leave empty for all)',\n placeholder: 'en,es,fr',\n })\n\n if (isCancel(languages)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const finalConfig = {\n ...config,\n dest: dest as string,\n format: format as 'json' | 'js' | 'ts' | 'yaml',\n environment: environment as string,\n languages: languages ? (languages as string).split(',').map(l => l.trim()) : undefined\n }\n\n const s = spinner()\n s.start('Syncing translations...')\n \n try {\n const { syncTranslations } = await import('./commands/load.js')\n await syncTranslations(finalConfig)\n s.stop('Translations synced successfully!')\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to sync translations')\n }\n throw error\n }\n}\n\nasync function configureAddCommand(config: Config): Promise<void> {\n const key = await text({\n message: 'Translation key',\n placeholder: 'common.save',\n validate: (value) => {\n if (!value) return 'Translation key is required'\n },\n })\n\n if (isCancel(key)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const description = await text({\n message: 'Description (optional)',\n placeholder: 'Save button text',\n })\n\n if (isCancel(description)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const translationMethod = await select({\n message: 'How would you like to provide translations?',\n options: [\n { value: 'manual', label: 'Provide translations manually' },\n { value: 'auto', label: 'Auto-translate from source language' },\n ],\n })\n\n if (isCancel(translationMethod)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n let translations: Record<string, string> = {}\n let auto = false\n\n if (translationMethod === 'auto') {\n auto = true\n const sourceValue = await text({\n message: 'Source language value',\n placeholder: 'Save',\n validate: (value) => {\n if (!value) return 'Source value is required for auto-translation'\n },\n })\n\n if (isCancel(sourceValue)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n translations.en = sourceValue as string\n } else {\n const languages = ['en', 'es', 'fr', 'de', 'nl']\n \n for (const lang of languages) {\n const value = await text({\n message: `Translation for ${lang} (optional)`,\n placeholder: `Enter ${lang} translation`,\n })\n\n if (isCancel(value)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n if (value) {\n translations[lang] = value as string\n }\n }\n }\n\n const s = spinner()\n s.start('Adding translation key...')\n\n try {\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n await client.addTranslationKey(key as string, translations)\n s.stop('Translation key added successfully!')\n \n if (auto) {\n console.log(chalk.cyan('\\n[AI] Auto-translation was enabled. Check the dashboard to review AI-generated translations.'))\n }\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to add translation key')\n }\n throw error\n }\n}\n\nasync function configureGetCommand(config: Config): Promise<void> {\n const infoType = await select({\n message: 'What information would you like to get?',\n options: [\n { value: 'project', label: 'Project information' },\n { value: 'languages', label: 'Languages' },\n { value: 'releases', label: 'Releases' },\n ],\n })\n\n if (isCancel(infoType)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const s = spinner()\n s.start('Fetching information...')\n\n try {\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n\n switch (infoType) {\n case 'project':\n const project = await client.getProject()\n s.stop('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 'languages':\n const languages = await client.getLanguages()\n s.stop('Languages:')\n languages.languages?.forEach((lang: any) => {\n const status = lang.enabled ? chalk.green('[ON]') : chalk.gray('[OFF]')\n console.log(` ${status} ${lang.language?.name || lang.language_code}`)\n })\n break\n \n case 'releases':\n const releases = await client.getReleases()\n s.stop('Recent releases:')\n releases.releases?.slice(0, 10).forEach((release: any) => {\n const current = release.is_current ? chalk.green(' [CURRENT]') : ''\n console.log(` ${release.version}${current}`)\n })\n break\n }\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to fetch information')\n }\n throw error\n }\n}\n\nasync function configureReleaseCommand(config: Config): Promise<void> {\n const action = await select({\n message: 'Release management',\n options: [\n { value: 'create', label: 'Create new release' },\n { value: 'list', label: 'List releases' },\n ],\n })\n\n if (isCancel(action)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n\n if (action === 'create') {\n const version = await text({\n message: 'Version',\n placeholder: '1.0.0',\n validate: (value) => {\n if (!value) return 'Version is required'\n },\n })\n\n if (isCancel(version)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const name = await text({\n message: 'Name (optional)',\n placeholder: 'Production Release',\n })\n\n if (isCancel(name)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const description = await text({\n message: 'Description (optional)',\n placeholder: 'Added new features...',\n })\n\n if (isCancel(description)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const setCurrent = await confirm({\n message: 'Set as current release?',\n })\n\n if (isCancel(setCurrent)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const s = spinner()\n s.start('Creating release...')\n\n try {\n const release = await client.createRelease({\n version: version as string,\n name: name as string || undefined,\n description: description as string || undefined,\n reviewedOnly: false,\n })\n \n if (setCurrent) {\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 s.stop('Release created successfully!')\n console.log(` ID: ${release.release.id}`)\n console.log(` Version: ${release.release.version}`)\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to create release')\n }\n throw error\n }\n \n } else {\n const s = spinner()\n s.start('Fetching releases...')\n \n try {\n const releases = await client.getReleases()\n s.stop('Releases:')\n releases.releases?.forEach((release: any, index: number) => {\n const current = release.is_current ? chalk.green(' [CURRENT]') : ''\n console.log(` ${index + 1}. ${release.version}${current}`)\n })\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to list releases')\n }\n throw error\n }\n }\n}"],"mappings":"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","names":["chalk","spinner","Command","chalk","ora","Command","chalk","spinner","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.28'\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// If no command was provided, run interactive mode\nif (process.argv.length <= 2) {\n ;(async () => {\n console.log(chalk.blue('Welcome to Lezu CLI!'))\n console.log()\n \n try {\n const config = loadConfig({})\n await interactiveMode(config)\n } catch (error) {\n if (error instanceof Error) {\n console.error(chalk.red('\\nError:'), error.message)\n } else {\n console.error(chalk.red('\\nError:'), error)\n }\n process.exit(1)\n }\n })()\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[Success] 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[AI] 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[Tip] 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[Success] 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[Info] 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 { intro, outro, select, text, confirm, spinner, cancel, isCancel } from '@clack/prompts'\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 intro(chalk.cyan('Welcome to Lezu CLI!'))\n\n try {\n // Select command\n const command = await select({\n message: 'What would you like to do?',\n options: [\n { value: 'load', label: 'Load translation files' },\n { value: 'add', label: 'Add a new translation key' },\n { value: 'get', label: 'Get project information' },\n { value: 'release', label: 'Manage releases' },\n ],\n })\n\n if (isCancel(command)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n // Get basic configuration\n const projectId = await text({\n message: 'Project ID',\n placeholder: 'Enter your project ID',\n initialValue: initialConfig.projectId || '',\n validate: (value) => {\n if (!value) return 'Project ID is required'\n },\n })\n\n if (isCancel(projectId)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const apiKey = await text({\n message: 'API Key',\n placeholder: 'Enter your API key',\n initialValue: initialConfig.apiKey || '',\n validate: (value) => {\n if (!value) return 'API Key is required'\n },\n })\n\n if (isCancel(apiKey)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const config = loadConfig({ projectId: projectId as string, apiKey: apiKey as string, ...initialConfig })\n\n // Validate connection before proceeding\n const validationSpinner = spinner()\n validationSpinner.start('Validating credentials...')\n \n try {\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n await client.getProject()\n validationSpinner.stop('Credentials validated!')\n } catch (error) {\n if (error instanceof Error) {\n validationSpinner.stop('Invalid credentials')\n outro(chalk.red(error.message))\n } else {\n validationSpinner.stop('Failed to validate credentials')\n outro(chalk.red('Could not connect to Lezu API'))\n }\n process.exit(1)\n }\n\n // Handle specific command configurations\n switch (command) {\n case 'load':\n await configureLoadCommand(config)\n break\n case 'add':\n await configureAddCommand(config)\n break\n case 'get':\n await configureGetCommand(config)\n break\n case 'release':\n await configureReleaseCommand(config)\n break\n }\n\n outro(chalk.green('Done!'))\n } catch (error) {\n if (error instanceof Error) {\n outro(chalk.red(error.message))\n } else {\n outro(chalk.red('An unexpected error occurred'))\n }\n process.exit(1)\n }\n}\n\nasync function configureLoadCommand(config: Config): Promise<void> {\n const dest = await text({\n message: 'Destination folder',\n placeholder: './src/i18n',\n initialValue: config.dest || './src/i18n',\n })\n\n if (isCancel(dest)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const format = await select({\n message: 'Output format',\n options: [\n { value: 'json', label: 'JSON' },\n { value: 'js', label: 'JavaScript (ES modules)' },\n { value: 'ts', label: 'TypeScript' },\n { value: 'yaml', label: 'YAML' },\n ],\n })\n\n if (isCancel(format)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const environment = await text({\n message: 'Environment',\n placeholder: 'production',\n initialValue: config.environment || 'production',\n })\n\n if (isCancel(environment)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const languages = await text({\n message: 'Specific languages (comma-separated, leave empty for all)',\n placeholder: 'en,es,fr',\n })\n\n if (isCancel(languages)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const finalConfig = {\n ...config,\n dest: dest as string,\n format: format as 'json' | 'js' | 'ts' | 'yaml',\n environment: environment as string,\n languages: languages ? (languages as string).split(',').map(l => l.trim()) : undefined\n }\n\n const s = spinner()\n s.start('Syncing translations...')\n \n try {\n const { syncTranslations } = await import('./commands/load.js')\n await syncTranslations(finalConfig)\n s.stop('Translations synced successfully!')\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to sync translations')\n }\n throw error\n }\n}\n\nasync function configureAddCommand(config: Config): Promise<void> {\n const key = await text({\n message: 'Translation key',\n placeholder: 'common.save',\n validate: (value) => {\n if (!value) return 'Translation key is required'\n },\n })\n\n if (isCancel(key)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const description = await text({\n message: 'Description (optional)',\n placeholder: 'Save button text',\n })\n\n if (isCancel(description)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const translationMethod = await select({\n message: 'How would you like to provide translations?',\n options: [\n { value: 'manual', label: 'Provide translations manually' },\n { value: 'auto', label: 'Auto-translate from source language' },\n ],\n })\n\n if (isCancel(translationMethod)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n let translations: Record<string, string> = {}\n let auto = false\n\n if (translationMethod === 'auto') {\n auto = true\n const sourceValue = await text({\n message: 'Source language value',\n placeholder: 'Save',\n validate: (value) => {\n if (!value) return 'Source value is required for auto-translation'\n },\n })\n\n if (isCancel(sourceValue)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n translations.en = sourceValue as string\n } else {\n const languages = ['en', 'es', 'fr', 'de', 'nl']\n \n for (const lang of languages) {\n const value = await text({\n message: `Translation for ${lang} (optional)`,\n placeholder: `Enter ${lang} translation`,\n })\n\n if (isCancel(value)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n if (value) {\n translations[lang] = value as string\n }\n }\n }\n\n const s = spinner()\n s.start('Adding translation key...')\n\n try {\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n await client.addTranslationKey(key as string, translations)\n s.stop('Translation key added successfully!')\n \n if (auto) {\n console.log(chalk.cyan('\\n[AI] Auto-translation was enabled. Check the dashboard to review AI-generated translations.'))\n }\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to add translation key')\n }\n throw error\n }\n}\n\nasync function configureGetCommand(config: Config): Promise<void> {\n const infoType = await select({\n message: 'What information would you like to get?',\n options: [\n { value: 'project', label: 'Project information' },\n { value: 'languages', label: 'Languages' },\n { value: 'releases', label: 'Releases' },\n ],\n })\n\n if (isCancel(infoType)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const s = spinner()\n s.start('Fetching information...')\n\n try {\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n\n switch (infoType) {\n case 'project':\n const project = await client.getProject()\n s.stop('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 'languages':\n const languages = await client.getLanguages()\n s.stop('Languages:')\n languages.languages?.forEach((lang: any) => {\n const status = lang.enabled ? chalk.green('[ON]') : chalk.gray('[OFF]')\n console.log(` ${status} ${lang.language?.name || lang.language_code}`)\n })\n break\n \n case 'releases':\n const releases = await client.getReleases()\n s.stop('Recent releases:')\n releases.releases?.slice(0, 10).forEach((release: any) => {\n const current = release.is_current ? chalk.green(' [CURRENT]') : ''\n console.log(` ${release.version}${current}`)\n })\n break\n }\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to fetch information')\n }\n throw error\n }\n}\n\nasync function configureReleaseCommand(config: Config): Promise<void> {\n const action = await select({\n message: 'Release management',\n options: [\n { value: 'create', label: 'Create new release' },\n { value: 'list', label: 'List releases' },\n ],\n })\n\n if (isCancel(action)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const { LezuApiClient } = await import('./api.js')\n const client = new LezuApiClient(config)\n\n if (action === 'create') {\n const version = await text({\n message: 'Version',\n placeholder: '1.0.0',\n validate: (value) => {\n if (!value) return 'Version is required'\n },\n })\n\n if (isCancel(version)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const name = await text({\n message: 'Name (optional)',\n placeholder: 'Production Release',\n })\n\n if (isCancel(name)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const description = await text({\n message: 'Description (optional)',\n placeholder: 'Added new features...',\n })\n\n if (isCancel(description)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const setCurrent = await confirm({\n message: 'Set as current release?',\n })\n\n if (isCancel(setCurrent)) {\n cancel('Operation cancelled')\n process.exit(0)\n }\n\n const s = spinner()\n s.start('Creating release...')\n\n try {\n const release = await client.createRelease({\n version: version as string,\n name: name as string || undefined,\n description: description as string || undefined,\n reviewedOnly: false,\n })\n \n if (setCurrent) {\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 s.stop('Release created successfully!')\n console.log(` ID: ${release.release.id}`)\n console.log(` Version: ${release.release.version}`)\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to create release')\n }\n throw error\n }\n \n } else {\n const s = spinner()\n s.start('Fetching releases...')\n \n try {\n const releases = await client.getReleases()\n s.stop('Releases:')\n releases.releases?.forEach((release: any, index: number) => {\n const current = release.is_current ? chalk.green(' [CURRENT]') : ''\n console.log(` ${index + 1}. ${release.version}${current}`)\n })\n } catch (error) {\n if (error instanceof Error) {\n s.stop(`Failed: ${error.message}`)\n } else {\n s.stop('Failed to list releases')\n }\n throw error\n }\n }\n}"],"mappings":"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","names":["chalk","spinner","Command","chalk","ora","Command","chalk","spinner","ora","chalk","chalk","LezuApiClient","version","chalk"]}
|