528daf5490
Formatters now determine their executable location when enabled rather than using hardcoded paths. This ensures formatters work correctly regardless of how the tool was installed or where executables are located on the system.
37 lines
918 B
TypeScript
37 lines
918 B
TypeScript
import { text } from "node:stream/consumers"
|
|
import { Log } from "../util/log"
|
|
import { Process } from "../util/process"
|
|
|
|
export namespace PackageRegistry {
|
|
const log = Log.create({ service: "bun" })
|
|
|
|
function which() {
|
|
return process.execPath
|
|
}
|
|
|
|
export async function info(pkg: string, field: string, cwd?: string): Promise<string | null> {
|
|
const result = Process.spawn([which(), "info", pkg, field], {
|
|
cwd,
|
|
stdout: "pipe",
|
|
stderr: "pipe",
|
|
env: {
|
|
...process.env,
|
|
BUN_BE_BUN: "1",
|
|
},
|
|
})
|
|
|
|
const code = await result.exited
|
|
const stdout = result.stdout ? await text(result.stdout) : ""
|
|
const stderr = result.stderr ? await text(result.stderr) : ""
|
|
|
|
if (code !== 0) {
|
|
log.warn("bun info failed", { pkg, field, code, stderr })
|
|
return null
|
|
}
|
|
|
|
const value = stdout.trim()
|
|
if (!value) return null
|
|
return value
|
|
}
|
|
}
|