UNPKG

@oaklean/cli

Version:

A command-line interface that provides utilities for parsing, inspecting, and converting the .oak file format, as well as interfaces used in the @oaklean suite.

81 lines 7.02 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const profiler_core_1 = require("@oaklean/profiler-core"); const commander_1 = require("commander"); class MetricsDataCommands { constructor() { const baseCommand = commander_1.program .command('metrics-data') .alias('md') .description('commands to convert or inspect the metrics data collection format'); baseCommand .command('show') .description('Displays the metrics data collection as a table') .argument('<input>', 'input file path') .option('-c, --csv', 'output as csv') .action(this.show.bind(this)); } static init() { return new MetricsDataCommands(); } show(input, options) { return __awaiter(this, void 0, void 0, function* () { let inputPath = new profiler_core_1.UnifiedPath(input); if (inputPath.isRelative()) { inputPath = new profiler_core_1.UnifiedPath(process.cwd()).join(inputPath); } const outputAsCSV = options.csv !== undefined; const data = profiler_core_1.MetricsDataCollection.loadFromFile(inputPath); if (data) { const pid = data.pid; const values = []; if (outputAsCSV) { profiler_core_1.LoggerHelper.log(['process (mJ)', 'system (mJ)', 'portion', 'duration (ns)'].join(',')); } for (const item of data.items) { if (item.processIsPresent(pid)) { const energyPortionOfProcess = item.energyPortionOfProcess(pid); const systemEnergy = item.cpuEnergy(); const processEnergy = energyPortionOfProcess * systemEnergy; const data = { processEnergy: processEnergy.toFixed(3), systemEnergy: systemEnergy.toFixed(3), energyPortionOfProcess: energyPortionOfProcess.toFixed(2), duration: item.duration }; values.push(data); if (outputAsCSV) { profiler_core_1.LoggerHelper.log([ data.processEnergy, data.systemEnergy, data.energyPortionOfProcess, data.duration ].join(',')); } } } if (!outputAsCSV) { profiler_core_1.LoggerHelper.table(values.map((value) => { return { 'process (mJ)': value.processEnergy, 'system (mJ)': value.systemEnergy, portion: value.energyPortionOfProcess, 'duration (ns)': value.duration }; }), ['process (mJ)', 'system (mJ)', 'portion', 'duration (ns)']); } } }); } } exports.default = MetricsDataCommands; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljc0RhdGFDb21tYW5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9NZXRyaWNzRGF0YUNvbW1hbmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsMERBSytCO0FBQy9CLHlDQUFtQztBQUVuQyxNQUFxQixtQkFBbUI7SUFDdkM7UUFDQyxNQUFNLFdBQVcsR0FBRyxtQkFBTzthQUN6QixPQUFPLENBQUMsY0FBYyxDQUFDO2FBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxXQUFXLENBQ1gsbUVBQW1FLENBQ25FLENBQUE7UUFFRixXQUFXO2FBQ1QsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLFdBQVcsQ0FBQyxpREFBaUQsQ0FBQzthQUM5RCxRQUFRLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDO2FBQ3RDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDO2FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSTtRQUNWLE9BQU8sSUFBSSxtQkFBbUIsRUFBRSxDQUFBO0lBQ2pDLENBQUM7SUFFSyxJQUFJLENBQ1QsS0FBYSxFQUNiLE9BRUM7O1lBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSwyQkFBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3RDLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzVCLFNBQVMsR0FBRyxJQUFJLDJCQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQzNELENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQTtZQUU3QyxNQUFNLElBQUksR0FBRyxxQ0FBcUIsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUE7WUFFMUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFBO2dCQUNwQixNQUFNLE1BQU0sR0FLTixFQUFFLENBQUE7Z0JBRVIsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDakIsNEJBQVksQ0FBQyxHQUFHLENBQ2YsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ3JFLENBQUE7Z0JBQ0YsQ0FBQztnQkFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDL0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDaEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUE7d0JBQy9ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTt3QkFDckMsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLEdBQUcsWUFBWSxDQUFBO3dCQUUzRCxNQUFNLElBQUksR0FBRzs0QkFDWixhQUFhLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7NEJBQ3ZDLFlBQVksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs0QkFDckMsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs0QkFDekQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO3lCQUN2QixDQUFBO3dCQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBRWpCLElBQUksV0FBVyxFQUFFLENBQUM7NEJBQ2pCLDRCQUFZLENBQUMsR0FBRyxDQUNmO2dDQUNDLElBQUksQ0FBQyxhQUFhO2dDQUNsQixJQUFJLENBQUMsWUFBWTtnQ0FDakIsSUFBSSxDQUFDLHNCQUFzQjtnQ0FDM0IsSUFBSSxDQUFDLFFBQVE7NkJBQ2IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ1gsQ0FBQTt3QkFDRixDQUFDO29CQUNGLENBQUM7Z0JBQ0YsQ0FBQztnQkFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2xCLDRCQUFZLENBQUMsS0FBSyxDQUNqQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ3BCLE9BQU87NEJBQ04sY0FBYyxFQUFFLEtBQUssQ0FBQyxhQUFhOzRCQUNuQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVk7NEJBQ2pDLE9BQU8sRUFBRSxLQUFLLENBQUMsc0JBQXNCOzRCQUNyQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFFBQVE7eUJBQy9CLENBQUE7b0JBQ0YsQ0FBQyxDQUFDLEVBQ0YsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FDM0QsQ0FBQTtnQkFDRixDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUM7S0FBQTtDQUNEO0FBOUZELHNDQThGQyJ9