@autocodingsystems/gateway-client
Version:
Library and commandline utility to control the acs gateway - device drivers for the most common industrial production line devices
70 lines (59 loc) • 2.96 kB
JavaScript
var api = require('../api');
var globToRegExp = require('glob-to-regexp');
async function details_command(argv, conf, options) {
var target = require('../parameters/target')(argv);
var name = require('../parameters/name')(argv);
var raw = require('../parameters/raw')(argv);
var addformat = require('../parameters/addformat')(argv);
if (!target.value || !name.value) {
usage();
return;
}
var filter = globToRegExp(name.value, {extended: true});
try {
var devices = await api(target.value).raw.getDevices();
devices = devices.filter(d => filter.test(d.Name));
await Promise.all(devices.map(d => d.Id).slice(0, 1).map(async id => {
var device = await api(target.value).raw.getDevice(id);
if (addformat.value) {
var adddetails = {
DeviceName: device.Name,
SupportedDeviceId: device.SupportedDeviceId,
ApplicationNodeId: device.ApplicationNodeId,
SocketClass: device.SocketClass,
SocketConfigurationSettings: device.SocketConfiguration.map(conf => conf),
DriverConfigurationSettings: device.DeviceConfiguration.map(conf => conf)
}
console.log(JSON.stringify(adddetails));
} else if (raw.value) {
console.log(JSON.stringify(device));
} else {
var supporteddevice = await api(target.value).raw.getSupportedDevice(device.SupportedDeviceId);
console.log(`Id: ${device.Id}`);
console.log(`Name: ${device.Name}`);
console.log(`Type: ${supporteddevice.AlternativeName}`);
console.log(`Classes: ${device.Classes.join(', ')}`);
console.log(`Active: ${device.Active}`);
console.log(`Health Status: ${device.HealthStatus}`);
console.log(`Connection: ${device.SocketClass}`);
device.SocketConfiguration.forEach(conf => console.log(` ${conf.Name}: ${conf.Value}`));
console.log(`Configuration:`);
device.DeviceConfiguration.forEach(conf => console.log(` ${conf.Name}: ${conf.Value}`));
if (supporteddevice.DeviceProfiles && supporteddevice.DeviceProfiles.length) {
console.log(`Job Types:`);
supporteddevice.DeviceProfiles.forEach(profile => console.log(` ${profile.Name} (${profile.MD5})`));
}
}
}));
} catch (e) {
throw e;
}
function usage() {
console.log('details: show details for the given device on the gateway: ');
console.log(' ' + target.description);
console.log(' ' + name.description);
console.log(' ' + raw.description);
console.log(' ' + addformat.description);
}
}
module.exports = details_command;