X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Futils%2FFileUtils.ts;h=4e556a4bc1c3d642c8c9edecbb92049d5e880044;hb=42486f2357b011f9244c6b29f4e05185138ce8d1;hp=f38bde6c8ea66218887438eefa23832c7e6aa0e9;hpb=9d7484a4667898757b7c23be3dec7458c337cb84;p=e-mobility-charging-stations-simulator.git diff --git a/src/utils/FileUtils.ts b/src/utils/FileUtils.ts index f38bde6c..4e556a4b 100644 --- a/src/utils/FileUtils.ts +++ b/src/utils/FileUtils.ts @@ -1,36 +1,44 @@ -import { EmptyObject } from '../types/EmptyObject'; -import { FileType } from '../types/FileType'; -import { HandleErrorParams } from '../types/Error'; -import { JsonType } from '../types/JsonType'; -import Utils from './Utils'; -import chalk from 'chalk'; -import fs from 'fs'; -import logger from './Logger'; +import fs from 'node:fs'; + +import { ErrorUtils } from './ErrorUtils'; +import { logger } from './Logger'; +import { Utils } from './Utils'; +import type { FileType, JsonType } from '../types'; + +export class FileUtils { + private constructor() { + // This is intentional + } -export default class FileUtils { public static watchJsonFile( - logPrefix: string, - fileType: FileType, file: string, + fileType: FileType, + logPrefix: string, refreshedVariable?: T, listener: fs.WatchListener = (event, filename) => { - if (filename && event === 'change') { + if (Utils.isNotEmptyString(filename) && event === 'change') { try { - logger.debug(logPrefix + ' ' + fileType + ' file ' + file + ' have changed, reload'); + logger.debug(`${logPrefix} ${fileType} file ${file} have changed, reload`); refreshedVariable && (refreshedVariable = JSON.parse(fs.readFileSync(file, 'utf8')) as T); } catch (error) { - FileUtils.handleFileException(logPrefix, fileType, file, error as NodeJS.ErrnoException, { - throwError: false, - }); + ErrorUtils.handleFileException( + file, + fileType, + error as NodeJS.ErrnoException, + logPrefix, + { + throwError: false, + } + ); } } } - ): fs.FSWatcher { - if (file) { + ): fs.FSWatcher | undefined { + if (Utils.isNotEmptyString(file)) { try { return fs.watch(file, listener); } catch (error) { - FileUtils.handleFileException(logPrefix, fileType, file, error as NodeJS.ErrnoException, { + ErrorUtils.handleFileException(file, fileType, error as NodeJS.ErrnoException, logPrefix, { throwError: false, }); } @@ -38,54 +46,4 @@ export default class FileUtils { logger.info(`${logPrefix} No ${fileType} file to watch given. Not monitoring its changes`); } } - - public static handleFileException( - logPrefix: string, - fileType: FileType, - file: string, - error: NodeJS.ErrnoException, - params: HandleErrorParams = { throwError: true, consoleOut: false } - ): void { - const prefix = !Utils.isEmptyString(logPrefix) ? logPrefix + ' ' : ''; - if (error.code === 'ENOENT') { - if (params?.consoleOut) { - console.warn( - chalk.green(prefix) + chalk.yellow(fileType + ' file ' + file + ' not found: '), - error - ); - } else { - logger.warn(prefix + fileType + ' file ' + file + ' not found: %j', error); - } - } else if (error.code === 'EEXIST') { - if (params?.consoleOut) { - console.warn( - chalk.green(prefix) + chalk.yellow(fileType + ' file ' + file + ' already exists: '), - error - ); - } else { - logger.warn(prefix + fileType + ' file ' + file + ' already exists: %j', error); - } - } else if (error.code === 'EACCES') { - if (params?.consoleOut) { - console.warn( - chalk.green(prefix) + chalk.yellow(fileType + ' file ' + file + ' access denied: '), - error - ); - } else { - logger.warn(prefix + fileType + ' file ' + file + ' access denied: %j', error); - } - } else { - if (params?.consoleOut) { - console.warn( - chalk.green(prefix) + chalk.yellow(fileType + ' file ' + file + ' error: '), - error - ); - } else { - logger.warn(prefix + fileType + ' file ' + file + ' error: %j', error); - } - if (params?.throwError) { - throw error; - } - } - } }