chore(vendor): import pi 1.3.0
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree. git-subtree-dir: third_party/pi git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
This commit is contained in:
41
third_party/pi/scripts/use-local-packages.mjs
vendored
Normal file
41
third_party/pi/scripts/use-local-packages.mjs
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import { resolve } from "node:path";
|
||||
import { parseArgs } from "node:util";
|
||||
import { wireConsumer } from "./local-package-install.mjs";
|
||||
import { readArtifactSet } from "./package-artifacts.mjs";
|
||||
|
||||
function printUsage() {
|
||||
console.log(`Usage: node scripts/use-local-packages.mjs --manifest <path> --consumer <dir> --package <name> [--package <name> ...] [--package-manager npm|pnpm]
|
||||
|
||||
Updates an external project's package configuration to use direct packages and
|
||||
all transitive Pi packages from a local package artifact set. Defaults to npm.
|
||||
`);
|
||||
}
|
||||
|
||||
const { values } = parseArgs({
|
||||
options: {
|
||||
consumer: { type: "string" },
|
||||
help: { type: "boolean", default: false },
|
||||
manifest: { type: "string" },
|
||||
package: { type: "string", multiple: true, default: [] },
|
||||
"package-manager": { type: "string", default: "npm" },
|
||||
},
|
||||
});
|
||||
if (values.help) {
|
||||
printUsage();
|
||||
process.exit(0);
|
||||
}
|
||||
if (!values.manifest) throw new Error("--manifest is required");
|
||||
if (!values.consumer) throw new Error("--consumer is required");
|
||||
if (values.package.length === 0) throw new Error("At least one --package is required");
|
||||
if (values["package-manager"] !== "npm" && values["package-manager"] !== "pnpm") {
|
||||
throw new Error(`Unsupported package manager: ${values["package-manager"]}`);
|
||||
}
|
||||
|
||||
const artifactSet = readArtifactSet(resolve(values.manifest));
|
||||
const consumerDirectory = resolve(values.consumer);
|
||||
wireConsumer({ artifactSet, consumerDirectory, packageManager: values["package-manager"], packageNames: values.package });
|
||||
|
||||
console.log(`Updated ${consumerDirectory}/package.json from ${artifactSet.manifestPath}`);
|
||||
console.log(`Run ${values["package-manager"]} install --ignore-scripts in the consumer project.`);
|
||||
Reference in New Issue
Block a user