UNPKG

@autocodingsystems/gateway-client

Version:

Library and commandline utility to control the acs gateway - device drivers for the most common industrial production line devices

79 lines (65 loc) 2.73 kB
var api = require('../api'); var globToRegExp = require('glob-to-regexp'); async function clear_command(argv, conf, options) { var target = require('../parameters/target')(argv); var name = require('../parameters/namenodefault')(argv); var nowait = require('../parameters/nowait')(argv); var timeout = require('../parameters/timeout')(argv); var raw = require('../parameters/raw')(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)); var clearResults = await Promise.all(devices.map(async d => { var result = Object.assign({}, d, {Removed: false, Success: false, Message: 'Request not sent'}); if (!d.Classes.some(c => c === 'DeviceControl')) { result.Removed = true; result.Message = 'Device does not support jobs'; return result; } try { await api(target.value).raw.removeDeviceJob(d.Id); result.Removed = true; result.Message = 'Did not wait for result'; if (!nowait.value) { var jobstatus = await api(target.value).waitForJobStatusChange(d.Id, 'Clearing', timeout.value); if (jobstatus.Status !== 'Clear') { result.Message = jobstatus.Message || `Job status: ${jobstatus.Status}`; } else { result.Success = true; result.Message = ''; } } return result; } catch (e) { result.Success = false; result.Message = e.Message; } return result; })); clearResults.forEach(cr => { if (raw.value) { console.log(JSON.stringify()); } else if (cr.Success || nowait.value) { console.log(`Removed Job From ${cr.Id}: ${cr.Name}`); } else { console.log(`Remove Job Failed From ${cr.Id}: ${cr.Name}, ${cr.Message}`); } }); } catch (e) { throw e; } function usage() { console.log('clear: remove job from a device on the gateway: '); console.log(' ' + target.description); console.log(' ' + name.description); console.log(' ' + nowait.description); console.log(' ' + timeout.description); console.log(' ' + raw.description); } } module.exports = clear_command;