@platformos/pos-cli
Version:
Manage your platformOS application
61 lines (49 loc) • 1.37 kB
JavaScript
const crypto = require('crypto');
const { execSync } = require('child_process');
const Sentry = require('@sentry/node');
Sentry.init({
dsn: 'https://36aa7321636447dc9e629e0ae9ab9ad0@sentry.io/1491332',
release: require('../../package.json').version,
maxBreadcrumbs: 10,
captureUnhandledRejections: false,
ignoreErrors: [
'NodeBackend.eventFromException'
],
});
const getStdout = cmd => {
const stdout = execSync(cmd);
return stdout.toString().trim();
};
const sha = str =>
crypto
.createHash('sha1')
.update(JSON.stringify(str))
.digest('hex');
Sentry.configureScope(scope => {
const os = process.platform;
const id = sha({
platform: os === 'win32' ? getStdout('systeminfo | findstr /B /C:"OS Name" /C:"OS Version"') : getStdout('uname -a'),
node: process.version,
shell: process.env.shell
});
scope.setExtra('platform', os);
scope.setExtra('nodeVersion', process.version);
scope.setExtra('shell', process.env.SHELL);
scope.setUser({ id });
});
const setExtras = o => {
if (o && o.extras) {
Sentry.configureScope(scope => {
for (let extra in o.extras) {
scope.setExtra(o.extras[extra].key, o.extras[extra].value);
}
});
}
};
module.exports = (message, opts) => {
if (process.env.CI === 'true') {
return;
}
setExtras(opts);
Sentry.captureMessage(message);
};