UNPKG

linux-os-release

Version:

Reads Linux operating system identification data

46 lines (45 loc) 1.22 kB
// index.ts import { promises as fs } from "node:fs"; function parseOsReleaseText(text) { const fields = {}; for (const line of text.split("\n")) { const trimmed = line.trim(); if (!trimmed || trimmed.startsWith("#")) { continue; } const match = trimmed.match(/^([A-Z_][A-Z0-9_]*)=(.*)$/); if (!match) { continue; } const [, key, rawValue] = match; let value = rawValue; if (value.startsWith('"') && value.endsWith('"') || value.startsWith("'") && value.endsWith("'")) { value = value.slice(1, -1); if (rawValue.startsWith('"')) { value = value.replace(/\\([\$"\\`])/g, "$1"); } } fields[key] = value; } return fields; } async function readLinuxOSReleaseInfo() { const paths = ["/etc/os-release", "/usr/lib/os-release"]; let text; for (const p of paths) { try { text = await fs.readFile(p, "utf8"); break; } catch { } } if (!text) throw new Error("os-release file not found in any standard location"); return parseOsReleaseText(text); } var linux_os_release_default = readLinuxOSReleaseInfo; export { linux_os_release_default as default, parseOsReleaseText, readLinuxOSReleaseInfo };