Fix incoming message error handling
[e-mobility-charging-stations-simulator.git] / src / utils / FileUtils.ts
index b3940b718e2a2c0240808b0ee8aaf807b5707bfe..014ebbdece21cf9a3c9b512573faf95c741693f1 100644 (file)
@@ -1,33 +1,39 @@
+import { EmptyObject } from '../types/EmptyObject';
+import { HandleErrorParams } from '../types/Error';
+import chalk from 'chalk';
 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) {
-        console.warn(prefix + fileType + ' file ' + filePath + ' not found: ', error);
+      if (params?.consoleOut) {
+        console.warn(chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' not found: '), error);
       } else {
         logger.warn(prefix + fileType + ' file ' + filePath + ' not found: %j', error);
       }
     } else if (error.code === 'EEXIST') {
-      if (consoleOut) {
-        console.warn(prefix + fileType + ' file ' + filePath + ' already exists: ', error);
+      if (params?.consoleOut) {
+        console.warn(chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' already exists: '), error);
       } else {
         logger.warn(prefix + fileType + ' file ' + filePath + ' already exists: %j', error);
       }
     } else if (error.code === 'EACCES') {
-      if (consoleOut) {
-        console.warn(prefix + fileType + ' file ' + filePath + ' access denied: ', error);
+      if (params?.consoleOut) {
+        console.warn(chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' access denied: '), error);
       } else {
         logger.warn(prefix + fileType + ' file ' + filePath + ' access denied: %j', error);
       }
     } else {
-      if (consoleOut) {
-        console.error(prefix + fileType + ' file ' + filePath + ' error: ', error);
+      if (params?.consoleOut) {
+        console.warn(chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' error: '), error);
       } else {
-        logger.error(prefix + fileType + ' file ' + filePath + ' error: %j', error);
+        logger.warn(prefix + fileType + ' file ' + filePath + ' error: %j', error);
+      }
+      if (params?.throwError) {
+        throw error;
       }
-      throw error;
     }
   }
 }