UNPKG

@oaklean/profiler-core

Version:

Part of the @oaklean suite. It provides all basic functions to work with the `.oak` file format. It allows parsing the `.oak` file format as well as tools for analyzing the measurement values. It also provides all necessary capabilities required for prec

121 lines 8.78 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PermissionHelper = void 0; const child_process_1 = __importDefault(require("child_process")); const fs = __importStar(require("fs")); const path_1 = __importDefault(require("path")); const os_1 = __importDefault(require("os")); /** * Get a flat list of all directories that were created recursively * @param {string} targetDir - Directory path to create recursively * @returns {string[]} - List of directories */ function createDirectoriesRecursively(targetDir) { const createdDirectories = []; const segments = targetDir.split(path_1.default.sep); // Start from the root or the current directory based on the path type const isAbsoluteWindowsPath = /^[A-Za-z]:/.test(targetDir); let windowsPrefix = ''; if (isAbsoluteWindowsPath) { const matches = /^[A-Za-z]:/.exec(targetDir); windowsPrefix = (matches && (matches === null || matches === void 0 ? void 0 : matches.length) > 0 ? matches[0] : ''); if (windowsPrefix !== '' && segments.length > 0) { segments.shift(); } } let currentPath = path_1.default.isAbsolute(targetDir) ? (isAbsoluteWindowsPath ? windowsPrefix : '') + path_1.default.sep : '.'; for (const segment of segments) { if (segment) { currentPath = path_1.default.join(currentPath, segment); if (!fs.existsSync(currentPath)) { fs.mkdirSync(currentPath); createdDirectories.push(currentPath); } } } return createdDirectories; } class PermissionHelper { static changeFileOwnershipBackToUser(path) { const sudoUser = process.env.SUDO_USER; if (sudoUser) { // change ownership from file back to the user who executed the code with sudo const options = {}; if (process.platform === 'win32') { options.shell = 'powershell.exe'; } try { child_process_1.default.execSync(`chown ${sudoUser} "${path}"`, options); } catch (_a) { } } } static changeFilePermission(path, permissions) { if (process.platform === 'win32') { return; } const options = {}; // if (process.platform === 'win32') { // options.shell = 'powershell.exe' // } try { child_process_1.default.execSync(`chmod ${permissions} "${path}"`, options); } catch (_a) { } } static mkdirRecursivelyWithUserPermission(path) { const dirPath = typeof path === 'string' ? path : path.toPlatformString(); const createdDirs = createDirectoriesRecursively(dirPath); for (const dir of createdDirs) { PermissionHelper.changeFileOwnershipBackToUser(dir); } } static writeFileWithUserPermission(file, data) { fs.writeFileSync(file, data); PermissionHelper.changeFileOwnershipBackToUser(file); } static checkWindowsAdminRights() { return new Promise(resolve => { const platform = os_1.default.platform(); if (platform !== 'win32') { resolve(false); } child_process_1.default.exec('fsutil dirty query ' + process.env.systemdrive, function (err, stdout, stderr) { if (err) { resolve(false); } else { resolve(true); } }); }); } } exports.PermissionHelper = PermissionHelper; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVybWlzc2lvbkhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXIvUGVybWlzc2lvbkhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtFQUE2RDtBQUM3RCx1Q0FBd0I7QUFDeEIsZ0RBQXVCO0FBQ3ZCLDRDQUFtQjtBQVFuQjs7OztPQUlJO0FBQ0osU0FBUyw0QkFBNEIsQ0FBQyxTQUFpQjtJQUN0RCxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtJQUM3QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLGNBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUUxQyxzRUFBc0U7SUFDdEUsTUFBTSxxQkFBcUIsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzFELElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQTtJQUN0QixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM1QyxhQUFhLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxJQUFJLGFBQWEsS0FBSyxFQUFFLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDakIsQ0FBQztJQUNGLENBQUM7SUFFRCxJQUFJLFdBQVcsR0FBRyxjQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxh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