UNPKG

ae-biu

Version:

Born For AE, Born To Do

93 lines (75 loc) 2.39 kB
'use strict'; var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var path = require('path'); var fs = require('fs'); var _0777 = parseInt('0777', 8); module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; function mkdirP(p, opts, f, made) { if (typeof opts === 'function') { f = opts; opts = {}; } else if (!opts || (typeof opts === 'undefined' ? 'undefined' : (0, _typeof3.default)(opts)) !== 'object') { opts = { mode: opts }; } var mode = opts.mode; var xfs = opts.fs || fs; if (mode === undefined) { mode = _0777 & ~process.umask(); } if (!made) made = null; var cb = f || function () {}; p = path.resolve(p); xfs.mkdir(p, mode, function (er) { if (!er) { made = made || p; return cb(null, made); } switch (er.code) { case 'ENOENT': mkdirP(path.dirname(p), opts, function (er, made) { if (er) cb(er, made);else mkdirP(p, opts, cb, made); }); break; default: xfs.stat(p, function (er2, stat) { if (er2 || !stat.isDirectory()) cb(er, made);else cb(null, made); }); break; } }); } mkdirP.sync = function sync(p, opts, made) { if (!opts || (typeof opts === 'undefined' ? 'undefined' : (0, _typeof3.default)(opts)) !== 'object') { opts = { mode: opts }; } var mode = opts.mode; var xfs = opts.fs || fs; if (mode === undefined) { mode = _0777 & ~process.umask(); } if (!made) made = null; p = path.resolve(p); try { xfs.mkdirSync(p, mode); made = made || p; } catch (err0) { switch (err0.code) { case 'ENOENT': made = sync(path.dirname(p), opts, made); sync(p, opts, made); break; default: var stat; try { stat = xfs.statSync(p); } catch (err1) { throw err0; } if (!stat.isDirectory()) throw err0; break; } } return made; };