// @generated by scripts/build-runtime.mjs; do not edit. // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader. import { MAX_METADATA_FILE_BYTES, directMatch, formatVersion, isRecord, optionBoolean, optionString, optionStrings, runBounded, safeMetadata, setString } from "./chunk-PV5KIAAP.js"; // src/runtime/development.ts import { join } from "node:path"; import { parse } from "smol-toml"; async function collectDevelopment(context) { const result = {}; const directNames = ["mise", "direnv", "pixi"]; const needsListing = directNames.some((name) => context.needs(name)); const entries = needsListing ? await context.entries() : []; if (context.needs("mise") && detected(context, entries, "mise", ["mise.toml", ".mise.toml", ".tool-versions"])) { const values = {}; if (context.needs("mise", "health")) { const output = await runBounded(context, "mise", ["doctor"]); const health = output ? parseMiseHealth(output) : void 0; if (health) values.health = health; } result.mise = values; } if (context.needs("direnv") && detected(context, entries, "direnv", [".envrc"])) { const values = {}; if (["rc_path", "allowed", "loaded"].some((variable) => context.needs("direnv", variable))) { const output = await runBounded(context, "direnv", ["status", "--json"]); if (output) Object.assign(values, parseDirenvStatus(output)); } result.direnv = values; } const conda = safeMetadata(context.input.environment.CONDA_DEFAULT_ENV); if (context.needs("conda") && conda && !(optionBoolean(context, "conda", "ignore_base") && conda === "base")) { result.conda = { environment: conda }; } if (context.needs("pixi") && detected(context, entries, "pixi", ["pixi.toml", "pixi.lock"])) { const values = {}; const environment = safeMetadata(context.input.environment.PIXI_ENVIRONMENT_NAME); if (environment && (environment !== "default" || optionBoolean(context, "pixi", "show_default_environment"))) { values.environment = environment; } const project = safeMetadata(context.input.environment.PIXI_PROJECT_NAME) ?? await readPixiProject(context); if (project) values.project_name = project; if (context.needs("pixi", "version")) { const output = await runBounded(context, "pixi", ["--version"]); const version = output ? parsePixiVersion(output) : void 0; if (version) values.version = formatVersion(version, optionString(context, "pixi", "version_format")); } result.pixi = values; } const nixState = safeMetadata(context.input.environment.IN_NIX_SHELL); if (context.needs("nix_shell") && (nixState === "pure" || nixState === "impure")) { const values = { state: nixState }; setString(values, "name", context.input.environment.NIX_SHELL_NAME); setString(values, "level", context.input.environment.NIX_SHELL_LEVEL); result.nix_shell = values; } if (context.needs("guix_shell") && safeMetadata(context.input.environment.GUIX_ENVIRONMENT)) { result.guix_shell = { state: "active" }; } return result; } function detected(context, entries, name, defaultFiles) { const files = optionStrings(context, name, "detect_files"); return directMatch( entries, files.length > 0 ? files : defaultFiles, optionStrings(context, name, "detect_extensions"), optionStrings(context, name, "detect_folders") ); } function parseMiseHealth(output) { const text = safeMetadata(output, 8192)?.toLowerCase(); if (!text) return void 0; if (/\b(?:healthy|no problems found|all checks passed)\b/u.test(text)) return "healthy"; if (/\b(?:error|unhealthy|problem|warning)\b/u.test(text)) return "issues"; return void 0; } function parseDirenvStatus(output) { try { const document = JSON.parse(output); if (!isRecord(document)) return {}; const values = {}; const found = isRecord(document.foundRC) ? document.foundRC : void 0; const loaded = isRecord(document.loadedRC) ? document.loadedRC : void 0; setString(values, "rc_path", found?.path ?? loaded?.path); if (typeof found?.allowed === "number" || typeof found?.allowed === "boolean") { values.allowed = found.allowed ? "allowed" : "denied"; } if (loaded) values.loaded = "loaded"; else if (found) values.loaded = "not loaded"; return values; } catch { const path = /^Found RC path ([^\r\n]+)$/mu.exec(output)?.[1]; return path ? { rc_path: safeMetadata(path) ?? "" } : {}; } } async function readPixiProject(context) { const source = await context.fs.readFile( join(context.input.cwd, "pixi.toml"), MAX_METADATA_FILE_BYTES ); if (!source) return void 0; try { const document = parse(source); const project = isRecord(document.project) ? document.project : void 0; const workspace = isRecord(document.workspace) ? document.workspace : void 0; return safeMetadata(project?.name ?? workspace?.name); } catch { return void 0; } } function parsePixiVersion(output) { const match = /^(?:pixi\s+)?(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)$/u.exec(output.trim()); return match?.[1] ? `v${match[1]}` : void 0; } export { collectDevelopment, parseDirenvStatus, parseMiseHealth }; //# sourceMappingURL=development-N7EARF34.ts.map