fix(cli,daemon,snmp): normalize CLI argument parsing and extract daemon monitoring helpers with stronger SNMP typing
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
export interface IWatchEventLike {
|
||||
kind: string;
|
||||
paths: string[];
|
||||
}
|
||||
|
||||
export type TConfigReloadTransition = 'monitoringWillStart' | 'deviceCountChanged' | 'reloaded';
|
||||
|
||||
export interface IConfigReloadSnapshot {
|
||||
transition: TConfigReloadTransition;
|
||||
message: string;
|
||||
shouldInitializeUpsStatus: boolean;
|
||||
shouldLogMonitoringStart: boolean;
|
||||
}
|
||||
|
||||
export function shouldReloadConfig(
|
||||
event: IWatchEventLike,
|
||||
configFileName: string = 'config.json',
|
||||
): boolean {
|
||||
return event.kind === 'modify' && event.paths.some((path) => path.includes(configFileName));
|
||||
}
|
||||
|
||||
export function shouldRefreshPauseState(
|
||||
event: IWatchEventLike,
|
||||
pauseFileName: string = 'pause',
|
||||
): boolean {
|
||||
return ['create', 'modify', 'remove'].includes(event.kind) &&
|
||||
event.paths.some((path) => path.includes(pauseFileName));
|
||||
}
|
||||
|
||||
export function analyzeConfigReload(
|
||||
oldDeviceCount: number,
|
||||
newDeviceCount: number,
|
||||
): IConfigReloadSnapshot {
|
||||
if (newDeviceCount > 0 && oldDeviceCount === 0) {
|
||||
return {
|
||||
transition: 'monitoringWillStart',
|
||||
message: `Configuration reloaded! Found ${newDeviceCount} UPS device(s)`,
|
||||
shouldInitializeUpsStatus: false,
|
||||
shouldLogMonitoringStart: true,
|
||||
};
|
||||
}
|
||||
|
||||
if (newDeviceCount !== oldDeviceCount) {
|
||||
return {
|
||||
transition: 'deviceCountChanged',
|
||||
message: `Configuration reloaded! UPS devices: ${oldDeviceCount} -> ${newDeviceCount}`,
|
||||
shouldInitializeUpsStatus: true,
|
||||
shouldLogMonitoringStart: false,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
transition: 'reloaded',
|
||||
message: 'Configuration reloaded successfully',
|
||||
shouldInitializeUpsStatus: false,
|
||||
shouldLogMonitoringStart: false,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user