UNPKG

@interopio/desktop-cli

Version:

io.Connect Desktop Seed Repository CLI Tools

148 lines (141 loc) • 7.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupCommand = void 0; const commander_1 = require("commander"); const utils_1 = require("../utils"); const license_validator_1 = require("../services/license-validator"); const component_manager_1 = require("../services/component-manager"); const modification_manager_1 = require("../services/modification-manager"); exports.setupCommand = new commander_1.Command('setup') .description('Initialize the io.Connect Desktop seed repository') .option('--skip-license', 'Skip license validation') .option('--skip-components', 'Skip component installation') .option('--skip-modifications', 'Skip applying modifications') .option('--force', 'Force setup even if already initialized') .option('--arch <arch>', 'Target architecture (x64, arm64)') .action(async (options) => { try { const targetPlatform = process.platform; const targetArch = options.arch || process.arch; utils_1.Logger.debug(`Setup started with options: ${JSON.stringify(options)}`, 'setup'); utils_1.Logger.debug(`Target platform: ${targetPlatform}, arch: ${targetArch}`, 'setup'); // Validate architecture option const validArchs = ['x64', 'arm64']; if (options.arch && !validArchs.includes(options.arch)) { utils_1.Logger.error(`Invalid architecture: ${options.arch}. Valid options: ${validArchs.join(', ')}`); process.exit(1); } utils_1.Logger.info(`Starting io.Connect Desktop seed repository setup for ${targetPlatform}-${targetArch}...`); // Step 1: Validate license if (!options.skipLicense) { utils_1.Logger.debug('Starting license validation...', 'setup'); utils_1.Logger.info('Validating license...'); const licenseValidator = new license_validator_1.LicenseValidator(); const isValid = await licenseValidator.validate(); if (!isValid) { utils_1.Logger.debug('License validation failed', 'setup'); utils_1.Logger.error('License validation failed. Please ensure license.json is present and valid.'); process.exit(1); } utils_1.Logger.debug('License validation successful', 'setup'); utils_1.Logger.success('License validation passed'); } else { utils_1.Logger.debug('Skipping license validation', 'setup'); } // Step 2: Create directory structure utils_1.Logger.info('Creating directory structure...'); await createDirectoryStructure(); utils_1.Logger.success('Directory structure created'); // Step 3: Install components if (!options.skipComponents) { utils_1.Logger.info(`Installing components for ${targetPlatform}-${targetArch}...`); const componentManager = new component_manager_1.ComponentManager(); await componentManager.installAll(undefined, options.arch); utils_1.Logger.success(`Components installed successfully for ${targetPlatform}-${targetArch}`); } // Step 4: Apply modifications if (!options.skipModifications) { utils_1.Logger.info('Applying modifications...'); const modificationManager = new modification_manager_1.ModificationManager(); await modificationManager.applyAll(); utils_1.Logger.success('Modifications applied successfully'); } utils_1.Logger.success(`Setup completed successfully for ${targetPlatform}-${targetArch}!`); // Provide next steps utils_1.Logger.info('\nšŸš€ Next Steps:'); utils_1.Logger.info(' iocd start - Start io.Connect Desktop'); utils_1.Logger.info(' iocd component list - View installed components'); utils_1.Logger.info(' iocd package - Create distribution package'); utils_1.Logger.info('\nšŸ“¦ Component Management:'); utils_1.Logger.info(' iocd component all - List all available components'); utils_1.Logger.info(' iocd component add <name> - Install additional components'); utils_1.Logger.info(' iocd component remove <name> - Remove installed components'); utils_1.Logger.info('\nšŸ”§ Maintenance Commands:'); utils_1.Logger.info(' iocd validate - Validate current setup'); utils_1.Logger.info(' iocd clean - Clean build artifacts'); utils_1.Logger.info(' iocd config show - Display current configuration'); utils_1.Logger.info('\nšŸ”— Storage Configuration:'); utils_1.Logger.info(' šŸ“¦ HTTP Storage (default) - Ready to use!'); utils_1.Logger.info(' • Default URL: http://localhost:8080'); utils_1.Logger.info(' • Override: Set IOCD_HTTP_BASE_URL=https://your-server.com'); utils_1.Logger.info(' • Example: https://releases.company.com/io-connect-desktop-v10.0.0-win32-x64.zip'); utils_1.Logger.info(' ✨ Built-in Components (no configuration needed):'); utils_1.Logger.info(' • iocd - io.Connect Desktop runtime'); utils_1.Logger.info(' • bbg-v2 - Bloomberg integration'); utils_1.Logger.info(' • teams-adapter - Microsoft Teams integration'); utils_1.Logger.info(' • excel-adapter - Excel integration'); utils_1.Logger.info(' āš™ļø Optional: Run "iocd config init" for advanced storage settings'); } catch (error) { utils_1.Logger.error(`Setup failed: ${error instanceof Error ? error.message : String(error)}`); process.exit(1); } }); async function createDirectoryStructure() { const directories = [ utils_1.PathUtils.getComponentsDir(), utils_1.PathUtils.getModificationsDir(), utils_1.PathUtils.getDistDir(), utils_1.PathUtils.getScriptsDir(), 'docs', '.vscode' ]; for (const dir of directories) { await utils_1.FileUtils.ensureDir(dir); utils_1.Logger.debug(`Created directory: ${dir}`); } // Create .gitignore if it doesn't exist const gitignorePath = '.gitignore'; if (!(await utils_1.FileUtils.exists(gitignorePath))) { const gitignoreContent = ` # Dependencies node_modules/ npm-debug.log* # Build outputs dist/ *.tsbuildinfo # Environment files .env .env.local # OS generated files .DS_Store Thumbs.db # IDE files .vscode/settings.json .idea/ # Component downloads components/ temp/ # Logs logs/ *.log # Runtime .pid .seed .coverage `; await utils_1.FileUtils.writeFile(gitignorePath, gitignoreContent.trim()); } } //# sourceMappingURL=setup.js.map