CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
index.js99 linesDownload Raw Back to mkdirp-classic
1var path = require('path');2var fs = require('fs');3var _0777 = parseInt('0777', 8);4 5module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;6 7function mkdirP (p, opts, f, made) {8    if (typeof opts === 'function') {9        f = opts;10        opts = {};11    }12    else if (!opts || typeof opts !== 'object') {13        opts = { mode: opts };14    }15    16    var mode = opts.mode;17    var xfs = opts.fs || fs;18    19    if (mode === undefined) {20        mode = _0777 & (~process.umask());21    }22    if (!made) made = null;23    24    var cb = f || function () {};25    p = path.resolve(p);26    27    xfs.mkdir(p, mode, function (er) {28        if (!er) {29            made = made || p;30            return cb(null, made);31        }32        switch (er.code) {33            case 'ENOENT':34                mkdirP(path.dirname(p), opts, function (er, made) {35                    if (er) cb(er, made);36                    else mkdirP(p, opts, cb, made);37                });38                break;39 40            // In the case of any other error, just see if there's a dir41            // there already.  If so, then hooray!  If not, then something42            // is borked.43            default:44                xfs.stat(p, function (er2, stat) {45                    // if the stat fails, then that's super weird.46                    // let the original error be the failure reason.47                    if (er2 || !stat.isDirectory()) cb(er, made)48                    else cb(null, made);49                });50                break;51        }52    });53}54 55mkdirP.sync = function sync (p, opts, made) {56    if (!opts || typeof opts !== 'object') {57        opts = { mode: opts };58    }59    60    var mode = opts.mode;61    var xfs = opts.fs || fs;62    63    if (mode === undefined) {64        mode = _0777 & (~process.umask());65    }66    if (!made) made = null;67 68    p = path.resolve(p);69 70    try {71        xfs.mkdirSync(p, mode);72        made = made || p;73    }74    catch (err0) {75        switch (err0.code) {76            case 'ENOENT' :77                made = sync(path.dirname(p), opts, made);78                sync(p, opts, made);79                break;80 81            // In the case of any other error, just see if there's a dir82            // there already.  If so, then hooray!  If not, then something83            // is borked.84            default:85                var stat;86                try {87                    stat = xfs.statSync(p);88                }89                catch (err1) {90                    throw err0;91                }92                if (!stat.isDirectory()) throw err0;93                break;94        }95    }96 97    return made;98};99