feat(cli): Add config command to display current configuration and update CLI help
This commit is contained in:
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@serve.zone/nupst',
|
||||
version: '2.1.0',
|
||||
version: '2.2.0',
|
||||
description: 'Node.js UPS Shutdown Tool for SNMP-enabled UPS devices'
|
||||
}
|
||||
|
91
ts/cli.ts
91
ts/cli.ts
@ -101,6 +101,10 @@ export class NupstCli {
|
||||
case 'uninstall':
|
||||
await this.uninstall();
|
||||
break;
|
||||
|
||||
case 'config':
|
||||
await this.showConfig();
|
||||
break;
|
||||
|
||||
case 'help':
|
||||
default:
|
||||
@ -372,6 +376,7 @@ Usage:
|
||||
nupst status - Show status of the systemd service and UPS status
|
||||
nupst setup - Run the interactive setup to configure SNMP settings
|
||||
nupst test - Test the current configuration by connecting to the UPS
|
||||
nupst config - Display the current configuration
|
||||
nupst update - Update NUPST from repository and refresh systemd service (requires root)
|
||||
nupst uninstall - Completely uninstall NUPST from the system (requires root)
|
||||
nupst help - Show this help message
|
||||
@ -843,6 +848,92 @@ Options:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the current configuration
|
||||
*/
|
||||
private async showConfig(): Promise<void> {
|
||||
try {
|
||||
// Try to load configuration
|
||||
try {
|
||||
await this.nupst.getDaemon().loadConfig();
|
||||
} catch (error) {
|
||||
console.error('┌─ Configuration Error ─────────────────────┐');
|
||||
console.error('│ No configuration found.');
|
||||
console.error('│ Please run \'nupst setup\' first to create a configuration.');
|
||||
console.error('└──────────────────────────────────────────┘');
|
||||
return;
|
||||
}
|
||||
|
||||
// Get current configuration
|
||||
const config = this.nupst.getDaemon().getConfig();
|
||||
|
||||
console.log('┌─ NUPST Configuration ──────────────────────┐');
|
||||
|
||||
// SNMP Settings
|
||||
console.log('│ SNMP Settings:');
|
||||
console.log(`│ Host: ${config.snmp.host}`);
|
||||
console.log(`│ Port: ${config.snmp.port}`);
|
||||
console.log(`│ Version: ${config.snmp.version}`);
|
||||
console.log(`│ UPS Model: ${config.snmp.upsModel || 'cyberpower'}`);
|
||||
|
||||
if (config.snmp.version === 1 || config.snmp.version === 2) {
|
||||
console.log(`│ Community: ${config.snmp.community}`);
|
||||
} else if (config.snmp.version === 3) {
|
||||
console.log(`│ Security Level: ${config.snmp.securityLevel}`);
|
||||
console.log(`│ Username: ${config.snmp.username}`);
|
||||
|
||||
// Show auth and privacy details based on security level
|
||||
if (config.snmp.securityLevel === 'authNoPriv' || config.snmp.securityLevel === 'authPriv') {
|
||||
console.log(`│ Auth Protocol: ${config.snmp.authProtocol || 'None'}`);
|
||||
}
|
||||
|
||||
if (config.snmp.securityLevel === 'authPriv') {
|
||||
console.log(`│ Privacy Protocol: ${config.snmp.privProtocol || 'None'}`);
|
||||
}
|
||||
|
||||
// Show timeout value
|
||||
console.log(`│ Timeout: ${config.snmp.timeout / 1000} seconds`);
|
||||
}
|
||||
|
||||
// Show OIDs if custom model is selected
|
||||
if (config.snmp.upsModel === 'custom' && config.snmp.customOIDs) {
|
||||
console.log('│ Custom OIDs:');
|
||||
console.log(`│ Power Status: ${config.snmp.customOIDs.POWER_STATUS || 'Not set'}`);
|
||||
console.log(`│ Battery Capacity: ${config.snmp.customOIDs.BATTERY_CAPACITY || 'Not set'}`);
|
||||
console.log(`│ Battery Runtime: ${config.snmp.customOIDs.BATTERY_RUNTIME || 'Not set'}`);
|
||||
}
|
||||
|
||||
// Thresholds
|
||||
console.log('│ Thresholds:');
|
||||
console.log(`│ Battery: ${config.thresholds.battery}%`);
|
||||
console.log(`│ Runtime: ${config.thresholds.runtime} minutes`);
|
||||
console.log(`│ Check Interval: ${config.checkInterval / 1000} seconds`);
|
||||
|
||||
// Configuration file location
|
||||
console.log('│');
|
||||
console.log('│ Configuration File Location:');
|
||||
console.log('│ /etc/nupst/config.json');
|
||||
|
||||
console.log('└──────────────────────────────────────────┘');
|
||||
|
||||
// Show service status
|
||||
try {
|
||||
const isActive = execSync('systemctl is-active nupst.service || true').toString().trim() === 'active';
|
||||
const isEnabled = execSync('systemctl is-enabled nupst.service || true').toString().trim() === 'enabled';
|
||||
|
||||
console.log('┌─ Service Status ─────────────────────────┐');
|
||||
console.log(`│ Service Active: ${isActive ? 'Yes' : 'No'}`);
|
||||
console.log(`│ Service Enabled: ${isEnabled ? 'Yes' : 'No'}`);
|
||||
console.log('└──────────────────────────────────────────┘');
|
||||
} catch (error) {
|
||||
// Ignore errors checking service status
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error(`Failed to display configuration: ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Completely uninstall NUPST from the system
|
||||
|
Reference in New Issue
Block a user