Sha256: 8bb3e4367f033a7a1d9494cae10777d6f723b97a3137bba4cea19c049531b268

Contents?: true

Size: 1.52 KB

Versions: 69

Compression:

Stored size: 1.52 KB

Contents

var fs = require('fs');
var path = require('path');

var mkpath = function mkpath(dirpath, mode, callback) {
    dirpath = path.resolve(dirpath);
    
    if (typeof mode === 'function' || typeof mode === 'undefined') {
        callback = mode;
        mode = 0777 & (~process.umask());
    }
    
    if (!callback) {
        callback = function () {};
    }
    
    fs.stat(dirpath, function (err, stats) {
        if (err) {
            if (err.code === 'ENOENT') {
                mkpath(path.dirname(dirpath), mode, function (err) {
                    if (err) {
                        callback(err);
                    } else {
                        fs.mkdir(dirpath, mode, callback);
                    }
                });
            } else {
                callback(err);
            }
        } else if (stats.isDirectory()) {
            callback(null);
        } else {
            callback(new Error(dirpath + ' exists and is not a directory'));
        }
    });
};

mkpath.sync = function mkpathsync(dirpath, mode) {
    dirpath = path.resolve(dirpath);
    
    if (typeof mode === 'undefined') {
        mode = 0777 & (~process.umask());
    }
    
    try {
        if (!fs.statSync(dirpath).isDirectory()) {
            throw new Error(dirpath + ' exists and is not a directory');
        }
    } catch (err) {
        if (err.code === 'ENOENT') {
            mkpathsync(path.dirname(dirpath), mode);
            fs.mkdirSync(dirpath, mode);
        } else {
            throw err;
        }
    }
};

module.exports = mkpath;

Version data entries

69 entries across 69 versions & 2 rubygems

Version Path
trusty-festivity-extension-2.5.3 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.5.2 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.5.1 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.5.0 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.4.6 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.4.5 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.4.4 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.4.3 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.4.2 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.4.1 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.4.0 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.3.30 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.3.29 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.3.28 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.3.27 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.3.26 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.3.25 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.3.24 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.3.23 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js
trusty-festivity-extension-2.3.22 node_modules/bower/node_modules/decompress-zip/node_modules/mkpath/mkpath.js