mirror of
https://github.com/unraid/api.git
synced 2026-01-09 18:20:12 -06:00
- Add RemovePluginQuestionSet for interactive plugin removal - Update plugin commands to use PluginManagementService - Improve plugin installation error handling and warnings - Clean up test fixtures and update plugin command tests - Reset dev config to clean state (v4.11.0, no plugins) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Improved plugin management in the CLI with interactive prompts for plugin removal and enhanced error handling. * CLI plugin commands now provide clearer user feedback and warnings for missing plugins. * Added log suppression capability and dedicated plugin log file support. * **Refactor** * Plugin CLI commands now use dedicated management services and interactive prompts instead of direct GraphQL operations, streamlining workflows and improving reliability. * Simplified CLI imports and logging for more straightforward error handling. * Deferred plugin module logging to application bootstrap for improved lifecycle management. * Updated logging service to respect global log suppression and added unconditional logging method. * **Tests** * Refactored plugin CLI command tests for better isolation and coverage, using service mocks and enhanced prompt simulations. * Updated report command tests to reflect new logging behavior. * **Chores** * Updated API configuration settings and removed outdated test fixture files and timestamp data. * Simplified test file logic by removing remote file download and cache functionality. * Adjusted build configuration to conditionally set CLI shebang based on environment. * Enhanced configuration file handler to optionally accept external logging. * Updated CLI command script to set environment variable for testing. * Added environment variables for log file paths and log suppression. * Updated logging setup to conditionally suppress logs and write plugin logs to file. * Improved error and output logging consistency across CLI commands. * Added placeholder file to ensure log directory version control tracking. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Pujit Mehrotra <pujit@lime-technology.com>
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import '@app/dotenv.js';
|
|
|
|
import { Logger } from '@nestjs/common';
|
|
|
|
import { CommandFactory } from 'nest-commander';
|
|
|
|
import { LOG_LEVEL, SUPPRESS_LOGS } from '@app/environment.js';
|
|
import { LogService } from '@app/unraid-api/cli/log.service.js';
|
|
|
|
const getUnraidApiLocation = async () => {
|
|
const { execa } = await import('execa');
|
|
try {
|
|
const shellToUse = await execa('which unraid-api');
|
|
return shellToUse.stdout.trim();
|
|
} catch (err) {
|
|
return '/usr/bin/unraid-api';
|
|
}
|
|
};
|
|
|
|
const getLogger = () => {
|
|
if (LOG_LEVEL === 'TRACE' && !SUPPRESS_LOGS) {
|
|
return new LogService();
|
|
}
|
|
return false;
|
|
};
|
|
|
|
const logger = getLogger();
|
|
try {
|
|
await import('json-bigint-patch');
|
|
const { CliModule } = await import('@app/unraid-api/cli/cli.module.js');
|
|
|
|
await CommandFactory.run(CliModule, {
|
|
cliName: 'unraid-api',
|
|
logger: logger, // - enable this to see nest initialization issues
|
|
completion: {
|
|
fig: false,
|
|
cmd: 'completion-script',
|
|
nativeShell: { executablePath: await getUnraidApiLocation() },
|
|
},
|
|
});
|
|
process.exit(0);
|
|
} catch (error) {
|
|
if (logger) {
|
|
logger.error('ERROR:', error);
|
|
}
|
|
process.exit(1);
|
|
}
|