UNPKG

depguard

Version:

A powerful CLI tool to check and update npm/yarn dependencies in your projects

82 lines (81 loc) 3.06 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const inquirer_1 = __importDefault(require("inquirer")); const ora_1 = __importDefault(require("ora")); const update_1 = require("./update"); const check_1 = require("./check"); const factory_1 = require("./package-managers/factory"); const program = new commander_1.Command(); const check = new check_1.Check(); const update = new update_1.Update(); program .name('depguard') .description('CLI to check and update project dependencies') .version('1.0.0'); program .command('check') .description('Check for outdated dependencies') .option('-i, --interactive', 'Run in interactive mode') .option('-o, --output <format>', 'Output format (json, csv)', 'text') .action(async (opts) => { const spinner = (0, ora_1.default)('Checking dependencies...').start(); try { await check.checkUpdates(); spinner.succeed('Dependencies checked successfully'); } catch (error) { spinner.fail('Failed to check dependencies'); console.error(error); } }); program .command('update') .description('Update dependencies to latest') .option('-s, --safe', 'Only update compatible versions') .option('-i, --interactive', 'Run in interactive mode') .option('-p, --package <name>', 'Update specific package') .action(async (opts) => { const spinner = (0, ora_1.default)('Updating dependencies...').start(); try { if (opts.interactive) { const packageManager = await factory_1.PackageManagerFactory.create(); const { action } = await inquirer_1.default.prompt([ { type: 'list', name: 'action', message: 'What would you like to do?', choices: [ { name: 'Update all dependencies', value: 'all' }, { name: 'Update only compatible versions', value: 'safe' }, { name: 'Update specific package', value: 'specific' } ] } ]); if (action === 'specific') { const { packageName } = await inquirer_1.default.prompt([ { type: 'input', name: 'packageName', message: 'Enter package name:' } ]); opts.package = packageName; } else if (action === 'safe') { opts.safe = true; } } await update.updateDependencies(opts); spinner.succeed('Dependencies updated successfully'); } catch (error) { spinner.fail('Failed to update dependencies'); console.error(error); } }); program.parse(process.argv);