feat(cli,snmp): fix APC runtime unit defaults and add interactive action editing

This commit is contained in:
2026-04-16 09:44:30 +00:00
parent c7b52c48d5
commit c42ebb56d3
22 changed files with 2001 additions and 863 deletions
+7 -8
View File
@@ -10,6 +10,7 @@ import type { TProtocol } from '../protocol/types.ts';
import type { INupstConfig, IUpsConfig } from '../daemon.ts';
import type { IActionConfig } from '../actions/base-action.ts';
import { ProxmoxAction } from '../actions/proxmox-action.ts';
import { getDefaultRuntimeUnitForUpsModel } from '../snmp/runtime-units.ts';
import { SHUTDOWN, UPSD } from '../constants.ts';
/**
@@ -996,18 +997,16 @@ export class UpsHandler {
logger.log('');
logger.info('Battery Runtime Unit:');
logger.dim(' Controls how NUPST interprets the runtime value from your UPS.');
logger.dim(' 1) Minutes (APC, TrippLite, Liebert - most common)');
logger.dim(' 1) Minutes (TrippLite, Liebert, many RFC 1628 devices)');
logger.dim(' 2) Seconds (Eaton, HPE, many RFC 1628 devices)');
logger.dim(' 3) Ticks (CyberPower - 1/100 second increments)');
logger.dim(' 3) Ticks (CyberPower, APC PowerNet - 1/100 second increments)');
const defaultUnitValue = snmpConfig.runtimeUnit === 'seconds'
const defaultRuntimeUnit = snmpConfig.runtimeUnit ||
getDefaultRuntimeUnitForUpsModel(snmpConfig.upsModel);
const defaultUnitValue = defaultRuntimeUnit === 'seconds'
? 2
: snmpConfig.runtimeUnit === 'ticks'
: defaultRuntimeUnit === 'ticks'
? 3
: snmpConfig.upsModel === 'cyberpower'
? 3
: snmpConfig.upsModel === 'eaton'
? 2
: 1;
const unitInput = await prompt(`Select runtime unit [${defaultUnitValue}]: `);