const os = require('os'); const jsonPath = require('jsonpath'); const FILTERABLE = ['userInfo', 'cpus']; module.exports.templateTags = [ { displayName: 'OS', name: 'os', description: 'get OS info', args: [ { displayName: 'Function', type: 'enum', options: [ { displayName: 'arch', value: 'arch' }, { displayName: 'cpus', value: 'cpus' }, { displayName: 'freemem', value: 'freemem' }, { displayName: 'hostname', value: 'hostname' }, { displayName: 'platform', value: 'platform' }, { displayName: 'release', value: 'release' }, { displayName: 'userInfo', value: 'userInfo' }, ], }, { displayName: 'JSONPath Filter', help: 'Some OS functions return objects. Use JSONPath queries to extract desired values.', hide: args => !FILTERABLE.includes(args[0].value), type: 'string', }, ], run(context, fnName, filter) { let value = os[fnName](); if (jsonPath && FILTERABLE.includes(fnName)) { try { value = jsonPath.query(value, filter)[0]; } catch (err) {} } if (typeof value !== 'string') { return JSON.stringify(value); } else { return value; } }, }, ];