UNPKG

@akson/cortex-shopify-translations

Version:

Unified Shopify translations management client with product extraction, translation sync, and CLI tools

101 lines (88 loc) 3.16 kB
#!/usr/bin/env node import { spawn } from 'child_process'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const args = process.argv.slice(2); // Default to help if no arguments if (args.length === 0 || args[0] === '--help' || args[0] === '-h') { console.log(` 🧠 Cortex Shopify Translations CLI Commands: setup Initialize a new project with config templates extract [type] Extract translations from Shopify translate Translate using OpenAI (requires OPENAI_API_KEY) reset Reset fixed keys to re-process all translations split Split large translation files into manageable categories merge Merge category files back into main translation file publish [type] Publish translations to Shopify Resource Types: product Product translations collection Collection translations page Page translations theme Theme translations (default) Examples: npx @akson/cortex-shopify-translations setup npx @akson/cortex-shopify-translations extract npx @akson/cortex-shopify-translations translate npx @akson/cortex-shopify-translations reset npx @akson/cortex-shopify-translations split npx @akson/cortex-shopify-translations merge npx @akson/cortex-shopify-translations extract product npx @akson/cortex-shopify-translations publish product Advanced Usage: npx @akson/cortex-shopify-translations publish --split # Publish from split files For more help on a specific command: npx @akson/cortex-shopify-translations extract --help npx @akson/cortex-shopify-translations publish --help npx @akson/cortex-shopify-translations reset --help `); process.exit(0); } // Map commands to scripts const command = args[0]; let script; let scriptArgs = args.slice(1); switch (command) { case 'setup': script = 'setup.mjs'; break; case 'extract': script = 'extract-translations.mjs'; break; case 'translate': script = 'translate-with-ai.mjs'; break; case 'reset': script = 'reset-translations.mjs'; break; case 'split': script = 'translations/scripts/split-translations.mjs'; break; case 'merge': script = 'translations/scripts/merge-back.mjs'; break; case 'publish': // Handle publish command with --split flag for merged publishing if (scriptArgs.includes('--split') || scriptArgs.includes('--merged')) { script = 'publish-split.mjs'; scriptArgs = scriptArgs.filter(arg => arg !== '--split' && arg !== '--merged'); } else { script = 'publish-translations.mjs'; } break; default: console.error(`Unknown command: ${command}`); console.log('Run with --help to see available commands'); process.exit(1); } // Execute the script const scriptPath = path.join(__dirname, script); const child = spawn('node', [scriptPath, ...scriptArgs], { stdio: 'inherit', cwd: process.cwd() }); child.on('exit', (code) => { process.exit(code || 0); });