mkdir-if-not-exists.js 1.49 KB
const MODULE_NAME = 'MKDIR-IF-NOT-EXISTS';

const fsPromise = require('fs').promises;
const mkdirp = require('mkdirp');
const logger = require('tektrans-logger');

logger.verbose(`${MODULE_NAME} 5C419B7B: CEKIDOT`);

const existed = [];
/**
 * @deprecated because mkdirp is safe if dir already exists
 * @param  {} filename
 */
const isFileExists = async (filename) => {
    if (existed.indexOf(filename) >= 0) return true;

    try {
        await fsPromise.stat(filename);
        existed.push(filename);
        return true;
    } catch (e) {
        return false;
    }
};

/**
 * @deprecated please use mkdirp directly
 * @param  {} xid
 * @param  {} dirname
 * @param  {} callerName
 */
module.exports = async (xid, dirname, callerName) => {
    logger.verbose(`${MODULE_NAME} 4BD9F146: Create directory if not exists`, {
        xid, dirname, callerName,
    });

    const alreadyExists = await isFileExists(dirname);
    if (!alreadyExists) {
        logger.verbose(`${MODULE_NAME} 6B08D52D: Creating directory`, {
            xid, dirname, callerName,
        });

        try {
            await mkdirp(dirname);
        } catch (e) {
            logger.warn(`${MODULE_NAME} 857718E9: Exception on creating directory`, {
                xid,
                dirname,
                callerName,
                eCode: e.code,
                eMessage: e.message,
            });
        }
    } else {
        logger.verbose(`${MODULE_NAME} 14A094F5: Directory already exists`, { xid, dirname, callerName });
    }
};