Stryker

fileUtils.js - Stryker report

Summary

File Based on all code Based on code coverage
fileUtils.js
98%
70/71 98% 70/71

Code

'use strict';
var _ = require('lodash');
var fs = require('fs');
var path = require('path');
var nodeGlob = require('glob');
var mkdirp = require('mkdirp');
/**
 * Checks if a file or folder exists.
 * @function
 * @param path - The path to the file or folder.
 * @returns True if the file exists.
 */
function fileOrFolderExistsSync(path) 0{
    try 1{
        var stats = fs.lstatSync(path);
        return true;
    }

    catch (errror) 2{
        return false;
    }

}

exports.fileOrFolderExistsSync = fileOrFolderExistsSync;
;
function fileOrFolderExists(path) 3{
    return new Promise(function (resolve) 4{
        fs.lstat(path, function (error, stats) 5{
            resolve(!error);
        });
    });
}

exports.fileOrFolderExists = fileOrFolderExists;
/**
 * Reads a file.
 * @function
 * @param filename - The name of the file.
 * @returns The content of the file.
 */
function readFile(filename) 6{
    return fs.readFileSync(filename, 'utf8');
}

exports.readFile = readFile;
;
/**
   * Normalizes the paths of a list of filenames.
   * @param files - The list of filenames which have to be normalized.
   */
function normalize(files) 7{
    _.forEach(files, function (file, key) 8{
        files[key] = path.resolve(path.normalize(file));
    });
}

exports.normalize = normalize;
;
function glob(expression) 9{
    return new Promise(function (resolve, reject) 10{
        nodeGlob(expression, function (error, matches) 11{
            if (1213error) 14{
                reject(error);
            }

            else 15{
                resolve(matches);
            }

        });
    });
}

exports.glob = glob;
function readdir(path) 16{
    return new Promise(function (resolve, reject) 17{
        fs.readdir(path, function (error, files) 18{
            if (1920error) 21{
                reject(error);
            }

            else 22{
                resolve(files);
            }

        });
    });
}

exports.readdir = readdir;
function stats(path) 23{
    return new Promise(function (resolve, reject) 24{
        fs.stat(path, function (error, stats) 25{
            if (2627error) 28{
                reject(error);
            }

            else 29{
                resolve(stats);
            }

        });
    });
}

function rmFile(path) 30{
    return new Promise(function (fileResolve, fileReject) 31{
        fs.unlink(path, function (error) 32{
            if (3334error) 35{
                fileReject(error);
            }

            else 36{
                fileResolve();
            }

        });
    });
}

function deleteDir(dirToDelete) 37{
    return new Promise(function (resolve, reject) 38{
        fileOrFolderExists(dirToDelete).then(function (exists) 39{
            if (4041exists) 42{
                readdir(dirToDelete).then(function (files) 43{
                    var promisses = [];
                    files.forEach(function (file) 44{
                        var currentPath = path.join(dirToDelete, file);
                        promisses.push(stats(currentPath).then(function (stats) 45{
                            if (4647stats.isDirectory()) 48{
                                // recurse
                                return deleteDir(currentPath);
                            }

                            else 49{
                                // delete file
                                return rmFile(currentPath);
                            }

                        }));
                    });
                    Promise.all(promisses).then(function () 50{ return resolve(); });
                });
            }

            else 51{
                resolve();
            }

        });
    });
}

exports.deleteDir = deleteDir;
function cleanFolder(folderName) 52{
    return fileOrFolderExists(folderName)
        .then(function (exists) 53{
        if (5455exists) 56{
            return deleteDir(folderName)
                .then(function () 57{ return mkdirRecursive(folderName); });
        }

        else 58{
            return mkdirRecursive(folderName);
        }

    });
}

exports.cleanFolder = cleanFolder;
function writeFile(fileName, content) 59{
    return new Promise(function (resolve, reject) 60{
        fs.writeFile(fileName, content, function (err) 61{
            if (6263err) 64{
                reject(err);
            }

            else 65{
                resolve();
            }

        });
    });
}

exports.writeFile = writeFile;
function mkdirRecursive(folderName) 66{
    if (6768!fileOrFolderExistsSync(folderName)) 69{
        mkdirp.sync(folderName);
    }

}

exports.mkdirRecursive = mkdirRecursive;
/**
 * Wrapper around the 'require' function (for testability)
 */
function importModule(moduleName) 70{
    require(moduleName);
}

exports.importModule = importModule;
//# sourceMappingURL=fileUtils.js.map