mcopy/cli/lib/system/index.js

80 lines
1.9 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const os = require("os");
const si = require("systeminformation");
//private
const exec = require('exec');
/**
* Evaluates system dependencies for digital
* projector features by executing processes with
* --help flag. If they do not exist, log to console
*
* @param {string} platform Operating system type
**/
async function dependencies(platform) {
let obj = {};
try {
await exec('ffmpeg -h');
obj.ffmpeg = 'ffmpeg';
}
catch (err) {
//return exit('ffmpeg is not installed', 3);
return console.error('ffmpeg is not installed', err);
}
//if linux
if (platform === 'nix') {
try {
await exec('eog -h');
obj.eog = 'eog';
}
catch (err) {
//return exit('eog is not installed', 4);
return console.error('eog is not installed', err);
}
}
return obj;
}
function displayMap(obj) {
const sm = {
width: obj.resolutionx,
height: obj.resolutiony
};
return sm;
}
async function displays() {
const obj = await si.graphics();
const arr = obj.displays;
return arr.map(displayMap);
}
/**
* Profile the current system and return an object with
* data about the displays and dependencies for the digital
* projector feature.
*
* @returns {object} Object containing system information
*/
async function system() {
const obj = {};
let platform;
try {
obj.tmp = os.tmpdir();
}
catch (err) {
obj.tmp = '/tmp';
}
platform = os.type();
if (platform === 'Darwin') {
obj.platform = 'osx';
}
else if (platform === 'Windows_NT') {
obj.platform = 'win';
}
else {
obj.platform = 'nix';
}
obj.displays = await displays();
obj.deps = await dependencies(obj.platform);
return obj;
}
module.exports = system;
//# sourceMappingURL=index.js.map