Add isEmptyString() helper and use it
[e-mobility-charging-stations-simulator.git] / src / utils / FileUtils.ts
index c0891e646a1da0242b31da66375a0251f733cb0f..38df26a9eb23419de11c4040a39170f7104978a2 100644 (file)
@@ -1,21 +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(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 (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 (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 + ' opening error: ', error);
+      if (params?.consoleOut) {
+        console.warn(
+          chalk.green(prefix) + chalk.yellow(fileType + ' file ' + filePath + ' error: '),
+          error
+        );
       } else {
-        logger.error(prefix + fileType + ' file ' + filePath + ' opening error: %j', error);
+        logger.warn(prefix + fileType + ' file ' + filePath + ' error: %j', error);
+      }
+      if (params?.throwError) {
+        throw error;
       }
-      throw error;
     }
   }
 }