46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
#!/usr/bin/env bun
|
|
|
|
import fs from "node:fs"
|
|
import path from "node:path"
|
|
import { createRequire } from "node:module"
|
|
|
|
const req = createRequire(import.meta.url)
|
|
|
|
const resolve = () => {
|
|
try {
|
|
return path.dirname(req.resolve("node-pty/package.json"))
|
|
} catch {
|
|
return
|
|
}
|
|
}
|
|
|
|
export const fixNodePtyHelper = () => {
|
|
const root = resolve()
|
|
if (!root) return []
|
|
|
|
const files = [
|
|
path.join(root, "prebuilds", "darwin-arm64", "spawn-helper"),
|
|
path.join(root, "prebuilds", "darwin-x64", "spawn-helper"),
|
|
path.join(root, "build", "Release", "spawn-helper"),
|
|
path.join(root, "build", "Debug", "spawn-helper"),
|
|
]
|
|
|
|
return files.flatMap((file) => {
|
|
if (!fs.existsSync(file)) return []
|
|
const mode = fs.statSync(file).mode
|
|
const next = mode | 0o111
|
|
if (mode === next) return []
|
|
fs.chmodSync(file, next)
|
|
return [file]
|
|
})
|
|
}
|
|
|
|
if (import.meta.main) {
|
|
const changed = fixNodePtyHelper()
|
|
if (!changed.length) process.exit(0)
|
|
console.log(`updated node-pty spawn-helper permissions (${changed.length})`)
|
|
for (const file of changed) {
|
|
console.log(`- ${file}`)
|
|
}
|
|
}
|