Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 1x 1x 1x 1x 1x | import {ISiStationStorageFields, siStationStorageLocations} from 'sportident/lib/SiStation/BaseSiStation'; import {SiFieldValue} from 'sportident/lib/storage/SiFieldValue'; import {ShellCommandContext} from '../Shell'; import {BaseCommand, ArgType} from './BaseCommand'; import {getDirectOrRemoteStation} from './getDirectOrRemoteStation'; export class SetInfoCommand extends BaseCommand { getArgTypes(): ArgType[] { return [ { name: 'target', choices: ['direct', 'remote'], }, { name: 'information name', choices: Object.keys(siStationStorageLocations), }, { name: 'new value', regex: /^\S+$/, }, ]; } printUsage(context: ShellCommandContext): void { super.printUsage(context); context.putString('e.g. setInfo direct code 10\n'); context.putString('e.g. setInfo remote mode Readout\n'); context.putString('e.g. setInfo d beeps false\n'); } run(context: ShellCommandContext): Promise<void> { const device = context.env.device; Iif (!device) { return Promise.reject(new Error('No device.')); } const station = getDirectOrRemoteStation(context.args[1], device); Iif (station === undefined) { context.putString('No such station\n'); return Promise.resolve(); } const infoName = context.args[2]; const newValue = context.args[3]; Iif (!(infoName in siStationStorageLocations)) { context.putString(`No such info: ${infoName}.\n`); } const validInfoName = infoName as keyof ISiStationStorageFields; const field = station.getField(validInfoName); const fieldValue = SiFieldValue.fromString<any>(field, newValue); const validFieldValue = fieldValue as SiFieldValue<ISiStationStorageFields[typeof validInfoName]>; return station.atomically(() => { station.setInfo(validInfoName, validFieldValue); }) .then(() => station.readInfo()) .then(() => { const infoValue = station.getInfo(validInfoName); context.putString(`${validInfoName}: ${infoValue}\n`); }); } } |