Add isEmptyString() helper and use it
[e-mobility-charging-stations-simulator.git] / src / utils / FileUtils.ts
index c923982ce320e4e993f8902b0c8ebddd86d02e00..38df26a9eb23419de11c4040a39170f7104978a2 100644 (file)
@@ -1,34 +1,57 @@
+import { EmptyObject } from '../types/EmptyObject';
+import { HandleErrorParams } from '../types/Error';
+import Utils from './Utils';
 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 {
-    const prefix = logPrefix.length !== 0 ? logPrefix + ' ' : '';
+  static handleFileException(
+    logPrefix: string,
+    fileType: string,
+    filePath: string,
+    error: NodeJS.ErrnoException,
+    params: HandleErrorParams<EmptyObject> = { throwError: true, consoleOut: false }
+  ): void {
+    const prefix = !Utils.isEmptyString(logPrefix) ? logPrefix + ' ' : '';
     if (error.code === 'ENOENT') {
-      if (consoleOut) {
-        console.warn(chalk.yellow(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(chalk.yellow(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(chalk.yellow(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.warn(chalk.yellow(prefix + fileType + ' file ' + filePath + ' error: '), error);
+      if (params?.consoleOut) {
+        console.warn(
+          chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' error: '),
+          error
+        );
       } else {
         logger.warn(prefix + fileType + ' file ' + filePath + ' error: %j', error);
       }
-      throw error;
+      if (params?.throwError) {
+        throw error;
+      }
     }
   }
 }