UNPKG

@launchql/cli

Version:
55 lines (54 loc) 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.selectPackage = selectPackage; const core_1 = require("@launchql/core"); const types_1 = require("@launchql/types"); /** * Handle package selection for operations that need a specific package * Returns the selected package name, or undefined if validation fails or no packages exist */ async function selectPackage(argv, prompter, cwd, operationName, log) { const pkg = new core_1.LaunchQLPackage(cwd); const modules = await pkg.getModules(); const moduleNames = modules.map(mod => mod.getModuleName()); // Check if any modules exist if (!moduleNames.length) { const errorMsg = 'No modules found in the specified directory.'; if (log) { log.error(errorMsg); return undefined; } else { prompter.close(); throw types_1.errors.NOT_FOUND({}, errorMsg); } } // If a specific package was provided, validate it if (argv.package) { const packageName = argv.package; if (log) log.info(`Using specified package: ${packageName}`); if (!moduleNames.includes(packageName)) { const errorMsg = `Package '${packageName}' not found. Available packages: ${moduleNames.join(', ')}`; if (log) { log.error(errorMsg); return undefined; } else { throw types_1.errors.NOT_FOUND({}, errorMsg); } } return packageName; } // Interactive selection const { package: selectedPackage } = await prompter.prompt(argv, [{ type: 'autocomplete', name: 'package', message: `Choose a package to ${operationName}`, options: moduleNames, required: true }]); if (log) log.info(`Selected package: ${selectedPackage}`); return selectedPackage; }