Fix incoming message error handling
[e-mobility-charging-stations-simulator.git] / src / utils / FileUtils.ts
index c6850c7103d47e9f05053fc8afaaefde961a9fcd..014ebbdece21cf9a3c9b512573faf95c741693f1 100644 (file)
@@ -1,34 +1,39 @@
+import { EmptyObject } from '../types/EmptyObject';
+import { HandleErrorParams } from '../types/Error';
 import chalk from 'chalk';
-import getLogger from './Logger';
+import logger from './Logger';
 
 export default class FileUtils {
-  static handleFileException(logPrefix: string, fileType: string, filePath: string, error: NodeJS.ErrnoException, consoleOut = false): void {
+  static handleFileException(logPrefix: string, fileType: string, filePath: string, error: NodeJS.ErrnoException,
+      params: HandleErrorParams<EmptyObject> = { throwError: true, consoleOut: false }): void {
     const prefix = logPrefix.length !== 0 ? logPrefix + ' ' : '';
     if (error.code === 'ENOENT') {
-      if (consoleOut) {
+      if (params?.consoleOut) {
         console.warn(chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' not found: '), error);
       } else {
-        getLogger().warn(prefix + fileType + ' file ' + filePath + ' not found: %j', error);
+        logger.warn(prefix + fileType + ' file ' + filePath + ' not found: %j', error);
       }
     } else if (error.code === 'EEXIST') {
-      if (consoleOut) {
+      if (params?.consoleOut) {
         console.warn(chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' already exists: '), error);
       } else {
-        getLogger().warn(prefix + fileType + ' file ' + filePath + ' already exists: %j', error);
+        logger.warn(prefix + fileType + ' file ' + filePath + ' already exists: %j', error);
       }
     } else if (error.code === 'EACCES') {
-      if (consoleOut) {
+      if (params?.consoleOut) {
         console.warn(chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' access denied: '), error);
       } else {
-        getLogger().warn(prefix + fileType + ' file ' + filePath + ' access denied: %j', error);
+        logger.warn(prefix + fileType + ' file ' + filePath + ' access denied: %j', error);
       }
     } else {
-      if (consoleOut) {
+      if (params?.consoleOut) {
         console.warn(chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' error: '), error);
       } else {
-        getLogger().warn(prefix + fileType + ' file ' + filePath + ' error: %j', error);
+        logger.warn(prefix + fileType + ' file ' + filePath + ' error: %j', error);
+      }
+      if (params?.throwError) {
+        throw error;
       }
-      throw error;
     }
   }
 }