check packageManager
This commit is contained in:
@@ -67668,6 +67668,7 @@ var flatMorph = (o, flatMapEntry) => {
|
||||
};
|
||||
|
||||
// ../node_modules/.pnpm/@ark+util@0.53.0/node_modules/@ark/util/out/records.js
|
||||
var isKeyOf = (k, o) => k in o;
|
||||
var unset = noSuggest(`unset${ZeroWidthSpace}`);
|
||||
|
||||
// ../node_modules/.pnpm/@ark+util@0.53.0/node_modules/@ark/util/out/objectKinds.js
|
||||
@@ -125070,7 +125071,7 @@ async function startMcpHttpServer(ctx) {
|
||||
}
|
||||
|
||||
// prep/installNodeDependencies.ts
|
||||
import { existsSync as existsSync3 } from "node:fs";
|
||||
import { existsSync as existsSync3, readFileSync as readFileSync2 } from "node:fs";
|
||||
import { join as join9 } from "node:path";
|
||||
|
||||
// ../node_modules/.pnpm/package-manager-detector@1.6.0/node_modules/package-manager-detector/dist/commands.mjs
|
||||
@@ -125367,10 +125368,11 @@ function isMetadataYarnClassic(metadataPath) {
|
||||
}
|
||||
|
||||
// prep/installNodeDependencies.ts
|
||||
var PM_INSTALL_COMMANDS = {
|
||||
pnpm: ["npm", "install", "-g", "pnpm"],
|
||||
yarn: ["npm", "install", "-g", "yarn"],
|
||||
bun: ["npm", "install", "-g", "bun"],
|
||||
var nodePackageManagers = {
|
||||
npm: ["echo", "npm is already installed"],
|
||||
pnpm: ["npm", "install", "-g", "{version}"],
|
||||
yarn: ["npm", "install", "-g", "{version}"],
|
||||
bun: ["npm", "install", "-g", "{version}"],
|
||||
deno: ["sh", "-c", "curl -fsSL https://deno.land/install.sh | sh"]
|
||||
};
|
||||
async function isCommandAvailable(command) {
|
||||
@@ -125381,9 +125383,28 @@ async function isCommandAvailable(command) {
|
||||
});
|
||||
return result.exitCode === 0;
|
||||
}
|
||||
async function installPackageManager(name) {
|
||||
log.info(`\u{1F4E6} installing ${name}...`);
|
||||
const [cmd, ...args3] = PM_INSTALL_COMMANDS[name];
|
||||
function getPackageManagerFromPackageJson() {
|
||||
const packageJsonPath = join9(process.cwd(), "package.json");
|
||||
try {
|
||||
const content = readFileSync2(packageJsonPath, "utf-8");
|
||||
const pkg = JSON.parse(content);
|
||||
if (!pkg.packageManager) return null;
|
||||
const withoutHash = pkg.packageManager.split("+")[0];
|
||||
const name = withoutHash.split("@")[0];
|
||||
if (isKeyOf(name, nodePackageManagers)) {
|
||||
return { name, installSpec: withoutHash };
|
||||
}
|
||||
log.warning(`unknown packageManager in package.json: ${pkg.packageManager}`);
|
||||
return null;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
async function installPackageManager(name, installSpec) {
|
||||
if (name === "npm") return null;
|
||||
log.info(`\u{1F4E6} installing ${installSpec}...`);
|
||||
const [cmd, ...templateArgs] = nodePackageManagers[name];
|
||||
const args3 = templateArgs.map((arg) => arg === "{version}" ? installSpec : arg);
|
||||
const result = await spawn4({
|
||||
cmd,
|
||||
args: args3,
|
||||
@@ -125407,20 +125428,21 @@ var installNodeDependencies = {
|
||||
return existsSync3(packageJsonPath);
|
||||
},
|
||||
run: async () => {
|
||||
const fromPackageJson = getPackageManagerFromPackageJson();
|
||||
const detected = await detect({ cwd: process.cwd() });
|
||||
if (!detected) {
|
||||
return {
|
||||
language: "node",
|
||||
packageManager: "npm",
|
||||
dependenciesInstalled: false,
|
||||
issues: ["no package manager detected from lockfile"]
|
||||
};
|
||||
const packageManager = fromPackageJson?.name || detected?.name || "npm";
|
||||
const installSpec = fromPackageJson?.installSpec || packageManager;
|
||||
const agent2 = detected?.agent || packageManager;
|
||||
if (fromPackageJson) {
|
||||
log.info(`\u{1F4E6} using packageManager from package.json: ${fromPackageJson.installSpec}`);
|
||||
} else if (detected) {
|
||||
log.info(`\u{1F4E6} detected package manager: ${packageManager} (${agent2})`);
|
||||
} else {
|
||||
log.info(`\u{1F4E6} no package manager detected, defaulting to npm`);
|
||||
}
|
||||
const packageManager = detected.name;
|
||||
log.info(`\u{1F4E6} detected package manager: ${packageManager} (${detected.agent})`);
|
||||
if (packageManager !== "npm" && !await isCommandAvailable(packageManager)) {
|
||||
if (!await isCommandAvailable(packageManager)) {
|
||||
log.info(`${packageManager} not found, attempting to install...`);
|
||||
const installError = await installPackageManager(packageManager);
|
||||
const installError = await installPackageManager(packageManager, installSpec);
|
||||
if (installError) {
|
||||
return {
|
||||
language: "node",
|
||||
@@ -125430,13 +125452,13 @@ var installNodeDependencies = {
|
||||
};
|
||||
}
|
||||
}
|
||||
const resolved = resolveCommand(detected.agent, "frozen", []) || resolveCommand(detected.agent, "install", []);
|
||||
const resolved = resolveCommand(agent2, "frozen", []) || resolveCommand(agent2, "install", []);
|
||||
if (!resolved) {
|
||||
return {
|
||||
language: "node",
|
||||
packageManager,
|
||||
dependenciesInstalled: false,
|
||||
issues: [`no install command found for ${detected.agent}`]
|
||||
issues: [`no install command found for ${agent2}`]
|
||||
};
|
||||
}
|
||||
log.info(`running: ${resolved.command} ${resolved.args.join(" ")}`);
|
||||
|
||||
Reference in New Issue
Block a user