feat(cli): Improve CLI output and logging with colored header, grouped script listings, and ANSI-styled logger
This commit is contained in:
+30
-8
@@ -3,6 +3,7 @@ import * as paths from './moxytool.paths.ts';
|
||||
import { logger } from './moxytool.logging.ts';
|
||||
import { ScriptIndex } from './moxytool.classes.scriptindex.ts';
|
||||
import { ScriptRunner } from './moxytool.classes.scriptrunner.ts';
|
||||
import denoConfig from '../deno.json' with { type: 'json' };
|
||||
|
||||
export const runCli = async () => {
|
||||
const smartshellInstance = new plugins.smartshell.Smartshell({
|
||||
@@ -10,6 +11,7 @@ export const runCli = async () => {
|
||||
});
|
||||
|
||||
const smartcliInstance = new plugins.smartcli.Smartcli();
|
||||
smartcliInstance.version = denoConfig.version;
|
||||
|
||||
// Initialize script index and check if refresh is needed
|
||||
const scriptIndex = new ScriptIndex();
|
||||
@@ -31,14 +33,16 @@ export const runCli = async () => {
|
||||
|
||||
// Standard command (no arguments)
|
||||
smartcliInstance.standardCommand().subscribe(async () => {
|
||||
logger.log('info', 'MOXYTOOL - Proxmox Administration Tool');
|
||||
logger.log('info', '');
|
||||
logger.log('info', 'Available commands:');
|
||||
logger.log('info', '* vgpu-setup - Install and configure Proxmox vGPU support');
|
||||
logger.log('info', '* scripts - Manage Proxmox community scripts');
|
||||
logger.log('info', '* update - Update MOXYTOOL to the latest version');
|
||||
logger.log('info', '');
|
||||
logger.log('info', 'Usage: moxytool <command> [options]');
|
||||
console.log('\x1b[1m\x1b[36m╔════════════════════════════════════════════╗\x1b[0m');
|
||||
console.log('\x1b[1m\x1b[36m║\x1b[0m \x1b[1mMOXYTOOL\x1b[0m - Proxmox Administration \x1b[1m\x1b[36m║\x1b[0m');
|
||||
console.log('\x1b[1m\x1b[36m╚════════════════════════════════════════════╝\x1b[0m');
|
||||
console.log('');
|
||||
console.log('\x1b[1mCommands:\x1b[0m');
|
||||
console.log(' \x1b[36m►\x1b[0m vgpu-setup Install and configure Proxmox vGPU support');
|
||||
console.log(' \x1b[36m►\x1b[0m scripts Manage Proxmox community scripts (400+)');
|
||||
console.log(' \x1b[36m►\x1b[0m update Update MOXYTOOL to the latest version');
|
||||
console.log('');
|
||||
console.log('\x1b[2mUsage: moxytool <command> [options]\x1b[0m');
|
||||
});
|
||||
|
||||
// vGPU setup command
|
||||
@@ -237,8 +241,18 @@ export const runCli = async () => {
|
||||
logger.log('info', '');
|
||||
|
||||
// Group by type
|
||||
const pveScripts = scripts.filter(s => s.type === 'pve');
|
||||
const containers = scripts.filter(s => s.type === 'ct');
|
||||
const vms = scripts.filter(s => s.type === 'vm');
|
||||
const otherScripts = scripts.filter(s => s.type !== 'pve' && s.type !== 'ct' && s.type !== 'vm');
|
||||
|
||||
if (pveScripts.length > 0) {
|
||||
logger.log('info', 'Proxmox VE Host Scripts:');
|
||||
pveScripts.forEach(script => {
|
||||
logger.log('info', ` • ${script.slug.padEnd(25)} - ${script.name}`);
|
||||
});
|
||||
logger.log('info', '');
|
||||
}
|
||||
|
||||
if (containers.length > 0) {
|
||||
logger.log('info', 'Containers (LXC):');
|
||||
@@ -253,6 +267,14 @@ export const runCli = async () => {
|
||||
vms.forEach(script => {
|
||||
logger.log('info', ` • ${script.slug.padEnd(25)} - ${script.name}`);
|
||||
});
|
||||
logger.log('info', '');
|
||||
}
|
||||
|
||||
if (otherScripts.length > 0) {
|
||||
logger.log('info', 'Other:');
|
||||
otherScripts.forEach(script => {
|
||||
logger.log('info', ` • ${script.slug.padEnd(25)} - ${script.name} (${script.type})`);
|
||||
});
|
||||
}
|
||||
|
||||
logger.log('info', '');
|
||||
|
||||
Reference in New Issue
Block a user