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
JavaScript
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();