UNPKG

fnspm

Version:

A unified command-line interface for managing packages across multiple package managers (npm, yarn, pnpm, bun, and deno) with macOS optimization for iCloud sync and automatic package manager detection.

65 lines (64 loc) 2.22 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const help_1 = require("./src/utils/help"); const initialize_1 = require("./src/utils/initialize"); const factory_1 = require("./src/packages/factory"); const helpers_1 = require("./src/utils/helpers"); const main = async () => { const args = process.argv.slice(2); if (args.length === 0) { console.error('Error: No command provided'); (0, help_1.displayHelp)(); process.exit(1); } if (args[0] === 'help') { (0, help_1.displayHelp)(); process.exit(0); } if (args[0] === 'initialize') { await (0, initialize_1.initialize)(args); process.exit(0); } let pmType; const pmFlagIndex = args.findIndex(arg => arg === '--pm'); if (pmFlagIndex !== -1) { if (pmFlagIndex === args.length - 1) { console.error('Error: No package manager specified after --pm flag'); process.exit(1); } const specifiedPm = args[pmFlagIndex + 1].toLowerCase(); if (!factory_1.VALID_PACKAGE_MANAGERS.includes(specifiedPm)) { console.error(`Error: Invalid package manager "${specifiedPm}"\n` + `Valid package managers are: ${factory_1.VALID_PACKAGE_MANAGERS.join(', ')}`); process.exit(1); } pmType = specifiedPm; if (!factory_1.VALID_PACKAGE_MANAGERS.includes(pmType)) { console.error(`Error: Invalid package manager "${pmType}"`); process.exit(1); } else { args.splice(pmFlagIndex, 2); } } else { pmType = await (0, helpers_1.findPackageManagerLockFile)(); } try { const pm = (0, factory_1.PackageManagerFactory)(pmType); await pm.execute(args); const config = await (0, helpers_1.loadConfig)(); if (config.symlink.addToGitIgnore) { await (0, helpers_1.AddToGitIgnore)(); } } catch (error) { console.error(`Failed to execute command:\n${error}`); process.exit(1); } }; main().catch(error => { console.error(`Fatal error:\n ${error.message}`); process.exit(1); });