UNPKG

@rnm/pm

Version:

Unified Package Manager for Node.js

43 lines 6.7 kB
#!/usr/bin/env node import fs from "node:fs/promises"; import path from "node:path"; import process from "node:process"; import { fileURLToPath } from "node:url"; import { executorMap } from "./base.js"; // 1. Get installDirectory const currentFile = process.argv[1]; if (!currentFile || !path.isAbsolute(currentFile)) { throw new Error(`The path '${String(currentFile)}' is not an absolute path.`); } const installDirectory = await fs.realpath(path.dirname(currentFile)); // 2. Get shimsDirectory const importMetaFile = fileURLToPath(import.meta.url); const importMetaDirname = path.dirname(importMetaFile); const shimsDirectory = path.join(importMetaDirname, "shims"); // 3. Get extension const extension = path.extname(importMetaFile); for (const shimName of getShimNames(process.argv)) { const cliFile = path.join(shimsDirectory, `${shimName}.cli${extension}`); await fs.chmod(cliFile, 0o755); const file = path.join(installDirectory, shimName); const symlink = path.relative(installDirectory, cliFile); await fs.unlink(file).catch((_error) => undefined); await fs.symlink(symlink, file); } function getShimNames(argv) { const packageManagers = argv.length <= 2 ? ["npm", "yarn", "pnpm"] : argv.slice(2); const result = []; for (const packageManager of packageManagers) { switch (packageManager) { case "npm": case "yarn": case "pnpm": result.push(packageManager, executorMap[packageManager]); break; default: throw new Error(`Unknown package manager: ${packageManager}`); } } return result; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5hYmxlLXBtLXNoaW0uY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VuYWJsZS1wbS1zaGltLmNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQW9CLE1BQU0sV0FBVyxDQUFDO0FBRTFELDBCQUEwQjtBQUMxQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLE1BQU0sQ0FBQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBRXRFLHdCQUF3QjtBQUN4QixNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDdkQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUU3RCxtQkFBbUI7QUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUUvQyxLQUFLLE1BQU0sUUFBUSxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLFFBQVEsT0FBTyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVELE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUNuQixJQUFjO0lBRWQsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxNQUFNLEdBQXdELEVBQUUsQ0FBQztJQUN2RSxLQUFLLE1BQU0sY0FBYyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzdDLFFBQVEsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssTUFBTTtnQkFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDekQsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgcHJvY2VzcyBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBleGVjdXRvck1hcCwgdHlwZSBTdXBwb3J0ZWRQbSB9IGZyb20gXCIuL2Jhc2UudHNcIjtcblxuLy8gMS4gR2V0IGluc3RhbGxEaXJlY3RvcnlcbmNvbnN0IGN1cnJlbnRGaWxlID0gcHJvY2Vzcy5hcmd2WzFdO1xuaWYgKCFjdXJyZW50RmlsZSB8fCAhcGF0aC5pc0Fic29sdXRlKGN1cnJlbnRGaWxlKSkge1xuICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwYXRoICcke1N0cmluZyhjdXJyZW50RmlsZSl9JyBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aC5gKTtcbn1cbmNvbnN0IGluc3RhbGxEaXJlY3RvcnkgPSBhd2FpdCBmcy5yZWFscGF0aChwYXRoLmRpcm5hbWUoY3VycmVudEZpbGUpKTtcblxuLy8gMi4gR2V0IHNoaW1zRGlyZWN0b3J5XG5jb25zdCBpbXBvcnRNZXRhRmlsZSA9IGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKTtcbmNvbnN0IGltcG9ydE1ldGFEaXJuYW1lID0gcGF0aC5kaXJuYW1lKGltcG9ydE1ldGFGaWxlKTtcbmNvbnN0IHNoaW1zRGlyZWN0b3J5ID0gcGF0aC5qb2luKGltcG9ydE1ldGFEaXJuYW1lLCBcInNoaW1zXCIpO1xuXG4vLyAzLiBHZXQgZXh0ZW5zaW9uXG5jb25zdCBleHRlbnNpb24gPSBwYXRoLmV4dG5hbWUoaW1wb3J0TWV0YUZpbGUpO1xuXG5mb3IgKGNvbnN0IHNoaW1OYW1lIG9mIGdldFNoaW1OYW1lcyhwcm9jZXNzLmFyZ3YpKSB7XG4gIGNvbnN0IGNsaUZpbGUgPSBwYXRoLmpvaW4oc2hpbXNEaXJlY3RvcnksIGAke3NoaW1OYW1lfS5jbGkke2V4dGVuc2lvbn1gKTtcbiAgYXdhaXQgZnMuY2htb2QoY2xpRmlsZSwgMG83NTUpO1xuXG4gIGNvbnN0IGZpbGUgPSBwYXRoLmpvaW4oaW5zdGFsbERpcmVjdG9yeSwgc2hpbU5hbWUpO1xuICBjb25zdCBzeW1saW5rID0gcGF0aC5yZWxhdGl2ZShpbnN0YWxsRGlyZWN0b3J5LCBjbGlGaWxlKTtcbiAgYXdhaXQgZnMudW5saW5rKGZpbGUpLmNhdGNoKChfZXJyb3I6IHVua25vd24pID0+IHVuZGVmaW5lZCk7XG4gIGF3YWl0IGZzLnN5bWxpbmsoc3ltbGluaywgZmlsZSk7XG59XG5cbmZ1bmN0aW9uIGdldFNoaW1OYW1lcyhcbiAgYXJndjogc3RyaW5nW10sXG4pOiAoU3VwcG9ydGVkUG0gfCAodHlwZW9mIGV4ZWN1dG9yTWFwKVtTdXBwb3J0ZWRQbV0pW10ge1xuICBjb25zdCBwYWNrYWdlTWFuYWdlcnMgPVxuICAgIGFyZ3YubGVuZ3RoIDw9IDIgPyBbXCJucG1cIiwgXCJ5YXJuXCIsIFwicG5wbVwiXSA6IGFyZ3Yuc2xpY2UoMik7XG4gIGNvbnN0IHJlc3VsdDogKFN1cHBvcnRlZFBtIHwgKHR5cGVvZiBleGVjdXRvck1hcClbU3VwcG9ydGVkUG1dKVtdID0gW107XG4gIGZvciAoY29uc3QgcGFja2FnZU1hbmFnZXIgb2YgcGFja2FnZU1hbmFnZXJzKSB7XG4gICAgc3dpdGNoIChwYWNrYWdlTWFuYWdlcikge1xuICAgICAgY2FzZSBcIm5wbVwiOlxuICAgICAgY2FzZSBcInlhcm5cIjpcbiAgICAgIGNhc2UgXCJwbnBtXCI6XG4gICAgICAgIHJlc3VsdC5wdXNoKHBhY2thZ2VNYW5hZ2VyLCBleGVjdXRvck1hcFtwYWNrYWdlTWFuYWdlcl0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwYWNrYWdlIG1hbmFnZXI6ICR7cGFja2FnZU1hbmFnZXJ9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=