@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
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVybWlzc2lvbkhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXIvUGVybWlzc2lvbkhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtFQUE2RDtBQUM3RCx1Q0FBd0I7QUFDeEIsZ0RBQXVCO0FBQ3ZCLDRDQUFtQjtBQVFuQjs7OztPQUlJO0FBQ0osU0FBUyw0QkFBNEIsQ0FBQyxTQUFpQjtJQUN0RCxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtJQUM3QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLGNBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUUxQyxzRUFBc0U7SUFDdEUsTUFBTSxxQkFBcUIsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzFELElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQTtJQUN0QixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM1QyxhQUFhLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxJQUFJLGFBQWEsS0FBSyxFQUFFLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDakIsQ0FBQztJQUNGLENBQUM7SUFFRCxJQUFJLFdBQVcsR0FBRyxjQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtJQUU1RyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDYixXQUFXLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDN0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDekIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3JDLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVELE9BQU8sa0JBQWtCLENBQUE7QUFDMUIsQ0FBQztBQUVELE1BQWEsZ0JBQWdCO0lBQzVCLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFZO1FBQ2hELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFBO1FBRXRDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDZCw4RUFBOEU7WUFDOUUsTUFBTSxPQUFPLEdBQW9CLEVBQ2hDLENBQUE7WUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUE7WUFDakMsQ0FBQztZQUNELElBQUksQ0FBQztnQkFDSix1QkFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLFFBQVEsS0FBSyxJQUFJLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUM5RCxDQUFDO1lBQUMsV0FBTSxDQUFDLENBQUEsQ0FBQztRQUNYLENBQUM7SUFDRixDQUFDO0lBRUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQVksRUFBRSxXQUE0QjtRQUNyRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDbEMsT0FBTTtRQUNQLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBb0IsRUFDaEMsQ0FBQTtRQUNELHNDQUFzQztRQUN0QyxvQ0FBb0M7UUFDcEMsSUFBSTtRQUNKLElBQUksQ0FBQztZQUNKLHVCQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsV0FBVyxLQUFLLElBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2pFLENBQUM7UUFBQyxXQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxJQUEwQjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7UUFFekUsTUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDekQsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMvQixnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwRCxDQUFDO0lBQ0YsQ0FBQztJQUVELE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxJQUFZLEVBQUUsSUFBcUM7UUFDckYsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDNUIsZ0JBQWdCLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUdELE1BQU0sQ0FBQyx1QkFBdUI7UUFDN0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM1QixNQUFNLFFBQVEsR0FBRyxZQUFFLENBQUMsUUFBUSxFQUFFLENBQUE7WUFDOUIsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNmLENBQUM7WUFDRCx1QkFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxVQUFVLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTTtnQkFDL0YsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2YsQ0FBQztxQkFBTSxDQUFDO29CQUNQLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDZCxDQUFDO1lBQ0YsQ0FBQyxDQUFDLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FFRDtBQTlERCw0Q0E4REMifQ==