UNPKG

@grnsft/if

Version:

Impact Framework

97 lines 10.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.osInfo = void 0; const os_1 = require("os"); const helpers_1 = require("../../common/util/helpers"); /** * Executes `lsb_release -a` command in terminal. * * ``` * Distributor ID: Ubuntu * Description: Ubuntu 22.04.4 LTS * Release: 22.04 * Codename: jammy * ``` * * Parses os and os-version from the response. */ const getLinuxInfo = async () => { const { stdout } = await (0, helpers_1.execPromise)('lsb_release -a'); const parseLinuxVersion = (lsbReleaseResponse) => { const regex = /Distributor ID: ([^\n]+)\nDescription: +([^ ]+) +([^ ]+) +(.+)\n/; const match = lsbReleaseResponse.match(regex); return { os: match ? match[1] : (0, os_1.platform)(), 'os-version': match ? `${match[3]} ${match[4]}` : (0, os_1.release)(), }; }; return parseLinuxVersion(stdout); }; /** * Executes in CMD `systeminfo | findstr /B /C:"OS Name" /B /C:"OS Version"` command. * * ``` * OS Name: Microsoft Windows 11 Enterprise * OS Version: 10.0.22631 N/A Build 22631 * ``` * * Parses os and os-version from the response. */ const getWindowsInfo = async () => { const { stdout } = await (0, helpers_1.execPromise)('systeminfo | findstr /B /C:"OS Name" /B /C:"OS Version"'); const parseWindowsInfo = (systemInfoResponse) => { const regex = /OS Name:\s+([^\n]+)\nOS Version:\s+([\d.]+)\s+(N\/A\s+Build\s+(\d+))/; const match = systemInfoResponse.match(regex); return { os: match ? match[1] : (0, os_1.platform)(), 'os-version': match ? `${match[2]} ${match[3]}` : (0, os_1.release)(), }; }; return parseWindowsInfo(stdout); }; /** * Executes `sw_vers` command in terminal. * * ``` * ProductName: macOS * ProductVersion: 14.3.1 * BuildVersion: 23D60 * ``` * * Parses os and os version from the response. */ const getMacVersion = async () => { const { stdout } = await (0, helpers_1.execPromise)('sw_vers'); const parseMacInfo = (swVersResponse) => { const productNameRegex = /ProductName:\s*(.+)/; const productVersionRegex = /ProductVersion:\s*(.+)/; const nameMatch = swVersResponse.match(productNameRegex); const versionMatch = swVersResponse.match(productVersionRegex); return { os: nameMatch ? nameMatch[1].trim() : (0, os_1.platform)(), 'os-version': versionMatch ? versionMatch[1].trim() : (0, os_1.release)(), }; }; return parseMacInfo(stdout); }; /** * Finds operating system information like name and version. */ const osInfo = async () => { const osKind = (0, os_1.platform)(); switch (osKind) { case 'darwin': return getMacVersion(); case 'linux': return getLinuxInfo(); case 'win32': return getWindowsInfo(); default: return { os: osKind, 'os-version': (0, os_1.release)(), }; } }; exports.osInfo = osInfo; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3MtY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vdXRpbC9vcy1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUFxQztBQUVyQyx1REFBc0Q7QUFFdEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFlBQVksR0FBRyxLQUFLLElBQUksRUFBRTtJQUM5QixNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsTUFBTSxJQUFBLHFCQUFXLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVyRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsa0JBQTBCLEVBQUUsRUFBRTtRQUN2RCxNQUFNLEtBQUssR0FDVCxrRUFBa0UsQ0FBQztRQUNyRSxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxhQUFRLEdBQUU7WUFDakMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUEsWUFBTyxHQUFFO1NBQzVELENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sY0FBYyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ2hDLE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxNQUFNLElBQUEscUJBQVcsRUFDaEMseURBQXlELENBQzFELENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsa0JBQTBCLEVBQUUsRUFBRTtRQUN0RCxNQUFNLEtBQUssR0FDVCxzRUFBc0UsQ0FBQztRQUN6RSxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxhQUFRLEdBQUU7WUFDakMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUEsWUFBTyxHQUFFO1NBQzVELENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxLQUFLLElBQUksRUFBRTtJQUMvQixNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsTUFBTSxJQUFBLHFCQUFXLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFFOUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxjQUFzQixFQUFFLEVBQUU7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztRQUMvQyxNQUFNLG1CQUFtQixHQUFHLHdCQUF3QixDQUFDO1FBRXJELE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0QsT0FBTztZQUNMLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSxhQUFRLEdBQUU7WUFDaEQsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFBLFlBQU8sR0FBRTtTQUNoRSxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSSxNQUFNLE1BQU0sR0FBRyxLQUFLLElBQUksRUFBRTtJQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFBLGFBQVEsR0FBRSxDQUFDO0lBRTFCLFFBQVEsTUFBTSxFQUFFO1FBQ2QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxhQUFhLEVBQUUsQ0FBQztRQUN6QixLQUFLLE9BQU87WUFDVixPQUFPLFlBQVksRUFBRSxDQUFDO1FBQ3hCLEtBQUssT0FBTztZQUNWLE9BQU8sY0FBYyxFQUFFLENBQUM7UUFDMUI7WUFDRSxPQUFPO2dCQUNMLEVBQUUsRUFBRSxNQUFNO2dCQUNWLFlBQVksRUFBRSxJQUFBLFlBQU8sR0FBRTthQUN4QixDQUFDO0tBQ0w7QUFDSCxDQUFDLENBQUM7QUFoQlcsUUFBQSxNQUFNLFVBZ0JqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmVsZWFzZSwgcGxhdGZvcm19IGZyb20gJ29zJztcblxuaW1wb3J0IHtleGVjUHJvbWlzZX0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvaGVscGVycyc7XG5cbi8qKlxuICogRXhlY3V0ZXMgYGxzYl9yZWxlYXNlIC1hYCBjb21tYW5kIGluIHRlcm1pbmFsLlxuICpcbiAqIGBgYFxuICogRGlzdHJpYnV0b3IgSUQ6IFVidW50dVxuICogRGVzY3JpcHRpb246ICAgIFVidW50dSAyMi4wNC40IExUU1xuICogUmVsZWFzZTogICAgICAgIDIyLjA0XG4gKiBDb2RlbmFtZTogICAgICAgamFtbXlcbiAqIGBgYFxuICpcbiAqIFBhcnNlcyBvcyBhbmQgb3MtdmVyc2lvbiBmcm9tIHRoZSByZXNwb25zZS5cbiAqL1xuY29uc3QgZ2V0TGludXhJbmZvID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWNQcm9taXNlKCdsc2JfcmVsZWFzZSAtYScpO1xuXG4gIGNvbnN0IHBhcnNlTGludXhWZXJzaW9uID0gKGxzYlJlbGVhc2VSZXNwb25zZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVnZXggPVxuICAgICAgL0Rpc3RyaWJ1dG9yIElEOiAoW15cXG5dKylcXG5EZXNjcmlwdGlvbjogKyhbXiBdKykgKyhbXiBdKykgKyguKylcXG4vO1xuICAgIGNvbnN0IG1hdGNoID0gbHNiUmVsZWFzZVJlc3BvbnNlLm1hdGNoKHJlZ2V4KTtcblxuICAgIHJldHVybiB7XG4gICAgICBvczogbWF0Y2ggPyBtYXRjaFsxXSA6IHBsYXRmb3JtKCksXG4gICAgICAnb3MtdmVyc2lvbic6IG1hdGNoID8gYCR7bWF0Y2hbM119ICR7bWF0Y2hbNF19YCA6IHJlbGVhc2UoKSxcbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiBwYXJzZUxpbnV4VmVyc2lvbihzdGRvdXQpO1xufTtcblxuLyoqXG4gKiBFeGVjdXRlcyBpbiBDTUQgYHN5c3RlbWluZm8gfCBmaW5kc3RyIC9CIC9DOlwiT1MgTmFtZVwiIC9CIC9DOlwiT1MgVmVyc2lvblwiYCBjb21tYW5kLlxuICpcbiAqIGBgYFxuICogT1MgTmFtZTogICAgICAgICAgICAgICAgICAgTWljcm9zb2Z0IFdpbmRvd3MgMTEgRW50ZXJwcmlzZVxuICogT1MgVmVyc2lvbjogICAgICAgICAgICAgICAgMTAuMC4yMjYzMSBOL0EgQnVpbGQgMjI2MzFcbiAqIGBgYFxuICpcbiAqIFBhcnNlcyBvcyBhbmQgb3MtdmVyc2lvbiBmcm9tIHRoZSByZXNwb25zZS5cbiAqL1xuY29uc3QgZ2V0V2luZG93c0luZm8gPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlY1Byb21pc2UoXG4gICAgJ3N5c3RlbWluZm8gfCBmaW5kc3RyIC9CIC9DOlwiT1MgTmFtZVwiIC9CIC9DOlwiT1MgVmVyc2lvblwiJ1xuICApO1xuXG4gIGNvbnN0IHBhcnNlV2luZG93c0luZm8gPSAoc3lzdGVtSW5mb1Jlc3BvbnNlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZWdleCA9XG4gICAgICAvT1MgTmFtZTpcXHMrKFteXFxuXSspXFxuT1MgVmVyc2lvbjpcXHMrKFtcXGQuXSspXFxzKyhOXFwvQVxccytCdWlsZFxccysoXFxkKykpLztcbiAgICBjb25zdCBtYXRjaCA9IHN5c3RlbUluZm9SZXNwb25zZS5tYXRjaChyZWdleCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3M6IG1hdGNoID8gbWF0Y2hbMV0gOiBwbGF0Zm9ybSgpLFxuICAgICAgJ29zLXZlcnNpb24nOiBtYXRjaCA/IGAke21hdGNoWzJdfSAke21hdGNoWzNdfWAgOiByZWxlYXNlKCksXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gcGFyc2VXaW5kb3dzSW5mbyhzdGRvdXQpO1xufTtcblxuLyoqXG4gKiBFeGVjdXRlcyBgc3dfdmVyc2AgY29tbWFuZCBpbiB0ZXJtaW5hbC5cbiAqXG4gKiBgYGBcbiAqIFByb2R1Y3ROYW1lOiAgICAgIG1hY09TXG4gKiBQcm9kdWN0VmVyc2lvbjogICAxNC4zLjFcbiAqIEJ1aWxkVmVyc2lvbjogICAgIDIzRDYwXG4gKiBgYGBcbiAqXG4gKiBQYXJzZXMgb3MgYW5kIG9zIHZlcnNpb24gZnJvbSB0aGUgcmVzcG9uc2UuXG4gKi9cbmNvbnN0IGdldE1hY1ZlcnNpb24gPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlY1Byb21pc2UoJ3N3X3ZlcnMnKTtcblxuICBjb25zdCBwYXJzZU1hY0luZm8gPSAoc3dWZXJzUmVzcG9uc2U6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHByb2R1Y3ROYW1lUmVnZXggPSAvUHJvZHVjdE5hbWU6XFxzKiguKykvO1xuICAgIGNvbnN0IHByb2R1Y3RWZXJzaW9uUmVnZXggPSAvUHJvZHVjdFZlcnNpb246XFxzKiguKykvO1xuXG4gICAgY29uc3QgbmFtZU1hdGNoID0gc3dWZXJzUmVzcG9uc2UubWF0Y2gocHJvZHVjdE5hbWVSZWdleCk7XG4gICAgY29uc3QgdmVyc2lvbk1hdGNoID0gc3dWZXJzUmVzcG9uc2UubWF0Y2gocHJvZHVjdFZlcnNpb25SZWdleCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3M6IG5hbWVNYXRjaCA/IG5hbWVNYXRjaFsxXS50cmltKCkgOiBwbGF0Zm9ybSgpLFxuICAgICAgJ29zLXZlcnNpb24nOiB2ZXJzaW9uTWF0Y2ggPyB2ZXJzaW9uTWF0Y2hbMV0udHJpbSgpIDogcmVsZWFzZSgpLFxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIHBhcnNlTWFjSW5mbyhzdGRvdXQpO1xufTtcblxuLyoqXG4gKiBGaW5kcyBvcGVyYXRpbmcgc3lzdGVtIGluZm9ybWF0aW9uIGxpa2UgbmFtZSBhbmQgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IG9zSW5mbyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3Qgb3NLaW5kID0gcGxhdGZvcm0oKTtcblxuICBzd2l0Y2ggKG9zS2luZCkge1xuICAgIGNhc2UgJ2Rhcndpbic6XG4gICAgICByZXR1cm4gZ2V0TWFjVmVyc2lvbigpO1xuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHJldHVybiBnZXRMaW51eEluZm8oKTtcbiAgICBjYXNlICd3aW4zMic6XG4gICAgICByZXR1cm4gZ2V0V2luZG93c0luZm8oKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3M6IG9zS2luZCxcbiAgICAgICAgJ29zLXZlcnNpb24nOiByZWxlYXNlKCksXG4gICAgICB9O1xuICB9XG59O1xuIl19