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