pnpm-sync
Version:
Recopy injected dependencies whenever a project is rebuilt in your PNPM workspace
89 lines • 3.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const commander_1 = require("commander");
const pnpm_sync_lib_1 = require("pnpm-sync-lib");
const node_core_library_1 = require("@rushstack/node-core-library");
const package_extractor_1 = require("@rushstack/package-extractor");
const lockfile_file_pnpm_lock_v6_1 = require("@pnpm/lockfile-file-pnpm-lock-v6");
const lockfile_fs_pnpm_lock_v9_1 = require("@pnpm/lockfile.fs-pnpm-lock-v9");
const program = new commander_1.Command();
program.version(require('../package.json').version);
let verboseLogging = false;
function logMessage(options) {
const { message, messageKind } = options;
switch (messageKind) {
case 'error':
console.error('ERROR: ' + message);
process.exitCode = 1;
break;
case 'warning':
console.error('WARNING: ' + message);
process.exitCode = 1;
break;
case 'verbose':
if (verboseLogging) {
console.log(message);
}
break;
default:
console.log(message);
break;
}
}
program
.command('copy')
.description('Execute the copy action based on the plan defined under node_modules/.pnpm-sync.json')
.option('-v, --verbose', 'Show verbose messages')
.action(async (options) => {
try {
const { verbose } = options;
verboseLogging = verbose;
await (0, pnpm_sync_lib_1.pnpmSyncCopyAsync)({
pnpmSyncJsonPath: process.cwd() + '/node_modules/.pnpm-sync.json',
getPackageIncludedFiles: package_extractor_1.PackageExtractor.getPackageIncludedFilesAsync,
forEachAsyncWithConcurrency: node_core_library_1.Async.forEachAsync,
ensureFolderAsync: node_core_library_1.FileSystem.ensureFolderAsync,
logMessageCallback: logMessage
});
}
catch (error) {
console.log('UNEXPECTED ERROR: ' + error);
process.exitCode = 1;
}
});
program
.command('prepare')
.description('Regenerate the .pnpm-sync.json file for a given pnpm-lock.yaml lockfile')
.requiredOption('-l, --lockfile <value>', 'The pnpm-lock.yaml file path')
.requiredOption('-s, --store <value>', 'The PNPM virtual store path ("node_modules/.pnpm" folder)')
.option('-v, --verbose', 'Show verbose messages')
.action(async (options) => {
try {
const { lockfile, store, verbose } = options;
verboseLogging = verbose;
await (0, pnpm_sync_lib_1.pnpmSyncPrepareAsync)({
lockfilePath: lockfile,
dotPnpmFolder: store,
ensureFolderAsync: node_core_library_1.FileSystem.ensureFolderAsync,
readPnpmLockfile: async (lockfilePath, options) => {
const pnpmLockFolder = lockfilePath.slice(0, lockfilePath.length - 'pnpm-lock.yaml'.length);
const lockfileV6 = await (0, lockfile_file_pnpm_lock_v6_1.readWantedLockfile)(pnpmLockFolder, options);
if (lockfileV6 === null || lockfileV6 === void 0 ? void 0 : lockfileV6.lockfileVersion.toString().startsWith('6')) {
return lockfileV6;
}
const lockfileV9 = await (0, lockfile_fs_pnpm_lock_v9_1.readWantedLockfile)(pnpmLockFolder, options);
if (lockfileV9 === null || lockfileV9 === void 0 ? void 0 : lockfileV9.lockfileVersion.toString().startsWith('9')) {
return lockfileV9;
}
return undefined;
},
logMessageCallback: logMessage
});
}
catch (error) {
console.log('UNEXPECTED ERROR: ' + error);
process.exitCode = 1;
}
});
program.parse();
//# sourceMappingURL=start.js.map