UNPKG

@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
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;