import fs from "node:fs";
import path from "node:path";

/**
 * Reads the `packages:` list from `pnpm-workspace.yaml` at the given repo
 * root. Returns an array of package glob strings (e.g. ["apps/*", "packages/*"]).
 * Returns [] when the file is missing or has no `packages:` key.
 *
 * Uses regex extraction over YAML parsing to avoid a `js-yaml` dependency;
 * the `packages:` block in pnpm-workspace.yaml has a stable, well-known
 * shape and this approach is sufficient.
 */
export function readWorkspacePackages(repoRoot) {
  const yamlPath = path.join(repoRoot, "pnpm-workspace.yaml");
  let src;
  try {
    src = fs.readFileSync(yamlPath, "utf8");
  } catch {
    return [];
  }
  const blockMatch = src.match(/^packages:\s*\n((?:\s+-\s+.+\n?)+)/m);
  if (!blockMatch) return [];
  return blockMatch[1]
    .split("\n")
    .map((line) => line.match(/^\s+-\s+"?([^"]+?)"?\s*$/))
    .filter((m) => m !== null)
    .map((m) => m[1]);
}
