fix(windows): resolve command execution and binary detection issues
This commit is contained in:
parent
da71eaebd2
commit
57d98eb1d7
@ -77,13 +77,16 @@ export function isBundledSkillAllowed(entry: SkillEntry, allowlist?: string[]):
|
|||||||
export function hasBinary(bin: string): boolean {
|
export function hasBinary(bin: string): boolean {
|
||||||
const pathEnv = process.env.PATH ?? "";
|
const pathEnv = process.env.PATH ?? "";
|
||||||
const parts = pathEnv.split(path.delimiter).filter(Boolean);
|
const parts = pathEnv.split(path.delimiter).filter(Boolean);
|
||||||
|
const extensions = process.platform === "win32" ? [".exe", ".cmd", ".bat", ""] : [""];
|
||||||
for (const part of parts) {
|
for (const part of parts) {
|
||||||
const candidate = path.join(part, bin);
|
for (const ext of extensions) {
|
||||||
try {
|
const candidate = path.join(part, bin + ext);
|
||||||
fs.accessSync(candidate, fs.constants.X_OK);
|
try {
|
||||||
return true;
|
fs.accessSync(candidate, fs.constants.X_OK);
|
||||||
} catch {
|
return true;
|
||||||
// keep scanning
|
} catch {
|
||||||
|
// keep scanning
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -54,13 +54,16 @@ export function resolveRuntimePlatform(): string {
|
|||||||
export function hasBinary(bin: string): boolean {
|
export function hasBinary(bin: string): boolean {
|
||||||
const pathEnv = process.env.PATH ?? "";
|
const pathEnv = process.env.PATH ?? "";
|
||||||
const parts = pathEnv.split(path.delimiter).filter(Boolean);
|
const parts = pathEnv.split(path.delimiter).filter(Boolean);
|
||||||
|
const extensions = process.platform === "win32" ? [".exe", ".cmd", ".bat", ""] : [""];
|
||||||
for (const part of parts) {
|
for (const part of parts) {
|
||||||
const candidate = path.join(part, bin);
|
for (const ext of extensions) {
|
||||||
try {
|
const candidate = path.join(part, bin + ext);
|
||||||
fs.accessSync(candidate, fs.constants.X_OK);
|
try {
|
||||||
return true;
|
fs.accessSync(candidate, fs.constants.X_OK);
|
||||||
} catch {
|
return true;
|
||||||
// keep scanning
|
} catch {
|
||||||
|
// keep scanning
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -85,6 +85,7 @@ export async function runCommandWithTimeout(
|
|||||||
cwd,
|
cwd,
|
||||||
env: resolvedEnv,
|
env: resolvedEnv,
|
||||||
windowsVerbatimArguments,
|
windowsVerbatimArguments,
|
||||||
|
shell: process.platform === "win32",
|
||||||
});
|
});
|
||||||
// Spawn with inherited stdin (TTY) so tools like `pi` stay interactive when needed.
|
// Spawn with inherited stdin (TTY) so tools like `pi` stay interactive when needed.
|
||||||
return await new Promise((resolve, reject) => {
|
return await new Promise((resolve, reject) => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user