Files
rea/scripts/prepare.mjs
T

40 lines
1.1 KiB
JavaScript

import { access } from "node:fs/promises";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
const root = join(dirname(fileURLToPath(import.meta.url)), "..");
const sourceDependencyIsAvailable = async (path) => {
try {
await access(join(root, "src"));
await access(join(root, "node_modules", path));
return true;
} catch (cause) {
if (
typeof cause === "object" &&
cause !== null &&
"code" in cause &&
cause.code === "ENOENT"
)
return false;
throw cause;
}
};
// Runtime and type checking must both see the patched release dependency.
// Published installs omit source and development dependencies.
if (await sourceDependencyIsAvailable("release-please/package.json")) {
const { applyReleasePleasePatch } =
await import("./lib/release-proposal.mjs");
await applyReleasePleasePatch();
}
if (
process.env.HUSKY !== "0" &&
(await sourceDependencyIsAvailable("husky/index.js"))
) {
const { default: installHusky } = await import("husky");
const message = installHusky();
if (message.length > 0) process.stdout.write(`${message}\n`);
}