#!/usr/bin/env bun

// On Windows, node-pty spawn-helper doesn't need chmod fixes.
// Early exit to avoid bun resolving transitive deps (@opentui/solid -> babel)
// which have hoisting issues on Windows.
if (process.platform === "win32") {
  console.log("skipped fix-node-pty on windows")
  process.exit(0)
}

import fs from "fs/promises"
import path from "path"
import { fileURLToPath } from "url"

const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
const dir = path.resolve(__dirname, "..")

const root = path.join(dir, "node_modules", "node-pty", "prebuilds")
const dirs = await fs.readdir(root, { withFileTypes: true }).catch(() => [])
const files = dirs.filter((x) => x.isDirectory()).map((x) => path.join(root, x.name, "spawn-helper"))
const result = await Promise.all(
  files.map(async (file) => {
    const stat = await fs.stat(file).catch(() => undefined)
    if (!stat) return
    if ((stat.mode & 0o111) === 0o111) return
    await fs.chmod(file, stat.mode | 0o755)
    return file
  }),
)
const fixed = result.filter(Boolean)
if (fixed.length) {
  console.log(`fixed node-pty permissions for ${fixed.length} helper${fixed.length === 1 ? "" : "s"}`)
}
