UNPKG

alepm

Version:

Advanced and secure Node.js package manager with binary storage, intelligent caching, and comprehensive security features

227 lines (210 loc) 5.64 kB
#!/usr/bin/env node const { Command } = require('commander'); const chalk = require('chalk'); const PackageManager = require('./core/package-manager'); const { version } = require('../package.json'); const program = new Command(); const pm = new PackageManager(); program .name('alepm') .description('Advanced and secure Node.js package manager') .version(version); // Install command program .command('install [packages...]') .alias('i') .description('Install packages') .option('-g, --global', 'Install globally') .option('-D, --save-dev', 'Save to devDependencies') .option('-E, --save-exact', 'Save exact version') .option('--force', 'Force reinstall') .action(async (packages, options) => { try { await pm.install(packages, options); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }); // Uninstall command program .command('uninstall <packages...>') .alias('remove') .alias('rm') .description('Uninstall packages') .option('-g, --global', 'Uninstall globally') .action(async (packages, options) => { try { await pm.uninstall(packages, options); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }); // Update command program .command('update [packages...]') .alias('upgrade') .description('Update packages') .option('-g, --global', 'Update global packages') .action(async (packages, options) => { try { await pm.update(packages, options); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }); // List command program .command('list') .alias('ls') .description('List installed packages') .option('-g, --global', 'List global packages') .option('--depth <level>', 'Dependency depth level', '0') .action(async (options) => { try { await pm.list(options); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }); // Search command program .command('search <query>') .description('Search for packages') .option('--limit <number>', 'Limit results', '20') .action(async (query, options) => { try { await pm.search(query, options); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }); // Info command program .command('info <package>') .description('Show package information') .action(async (packageName) => { try { await pm.info(packageName); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }); // Run command program .command('run <script>') .description('Run a script from package.json') .option('--silent', 'Suppress output from npm scripts') .option('--if-present', 'Don\'t error if script is missing') .action(async (script, options) => { try { await pm.runScript(script, options); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }); // Cache commands program .command('cache') .description('Cache management') .addCommand( new Command('clean') .description('Clean cache') .action(async () => { try { await pm.cleanCache(); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }) ) .addCommand( new Command('verify') .description('Verify cache integrity') .action(async () => { try { await pm.verifyCache(); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }) ); // Security commands program .command('audit') .description('Audit packages for security vulnerabilities') .option('--fix', 'Automatically fix vulnerabilities') .action(async (options) => { try { await pm.audit(options); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }); // Lock file commands program .command('lock') .description('Lock file management') .addCommand( new Command('verify') .description('Verify lock file integrity') .action(async () => { try { await pm.verifyLock(); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }) ); // Config commands program .command('config') .description('Configuration management') .addCommand( new Command('set <key> <value>') .description('Set configuration value') .action(async (key, value) => { try { await pm.setConfig(key, value); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }) ) .addCommand( new Command('get <key>') .description('Get configuration value') .action(async (key) => { try { await pm.getConfig(key); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }) ); // Initialize project program .command('init') .description('Initialize a new project') .option('-y, --yes', 'Use default values') .action(async (options) => { try { await pm.initProject(options); } catch (error) { console.error(chalk.red(`Error: ${error.message}`)); process.exit(1); } }); program.parse();