Skip to content

Commit

Permalink
Update: Swap mkdirp/mkdirpStream for fs-mkdirp-stream dependency
Browse files Browse the repository at this point in the history
  • Loading branch information
phated committed Nov 30, 2017
1 parent cb9f0c8 commit 33ee92a
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 319 deletions.
1 change: 0 additions & 1 deletion lib/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,4 @@
module.exports = {
MASK_MODE: parseInt('7777', 8),
DEFAULT_FILE_MODE: parseInt('0666', 8),
DEFAULT_DIR_MODE: parseInt('0777', 8),
};
11 changes: 9 additions & 2 deletions lib/dest/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
var lead = require('lead');
var pumpify = require('pumpify');
var prepare = require('vinyl-prepare');
var mkdirpStream = require('fs-mkdirp-stream');
var number = require('value-or-function').number;

var fo = require('../file-operations');
var sourcemap = require('./sourcemap');
var writeContents = require('./write-contents');

Expand All @@ -13,10 +14,16 @@ function dest(outFolder, opt) {
opt = {};
}

function dirpath(file, callback) {
var dirMode = number(opt.dirMode, file);

callback(null, file.dirname, dirMode);
}

var saveStream = pumpify.obj(
prepare.dest(outFolder, opt),
sourcemap(opt),
fo.mkdirpStream(opt),
mkdirpStream.obj(dirpath),
writeContents(opt)
);

Expand Down
4 changes: 3 additions & 1 deletion lib/dest/write-contents/write-dir.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

var fs = require('graceful-fs');

var mkdirp = require('fs-mkdirp-stream/mkdirp');

var fo = require('../../file-operations');

function writeDir(file, onWritten) {
fo.mkdirp(file.path, file.stat.mode, onMkdirp);
mkdirp(file.path, file.stat.mode, onMkdirp);

function onMkdirp(mkdirpErr) {
if (mkdirpErr) {
Expand Down
84 changes: 0 additions & 84 deletions lib/file-operations.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,8 @@
var util = require('util');

var fs = require('graceful-fs');
var path = require('path');
var assign = require('object-assign');
var date = require('value-or-function').date;
var number = require('value-or-function').number;
var through = require('through2');
var FlushWriteStream = require('flush-write-stream');

var constants = require('./constants');
Expand Down Expand Up @@ -285,85 +282,6 @@ function writeFile(filepath, data, options, callback) {
}
}

function mkdirp(dirpath, customMode, callback) {
if (typeof customMode === 'function') {
callback = customMode;
customMode = undefined;
}

var mode = customMode || (constants.DEFAULT_DIR_MODE & ~process.umask());
dirpath = path.resolve(dirpath);

fs.mkdir(dirpath, mode, onMkdir);

function onMkdir(mkdirErr) {
if (!mkdirErr) {
return fs.stat(dirpath, onStat);
}

switch (mkdirErr.code) {
case 'ENOENT': {
return mkdirp(path.dirname(dirpath), onRecurse);
}

case 'EEXIST': {
return fs.stat(dirpath, onStat);
}

default: {
return callback(mkdirErr);
}
}

function onStat(statErr, stats) {
if (statErr) {
return callback(statErr);
}

if (!stats.isDirectory()) {
return callback(mkdirErr);
}

if (stats.mode === mode) {
return callback();
}

if (!customMode) {
return callback();
}

fs.chmod(dirpath, mode, callback);
}
}

function onRecurse(recurseErr) {
if (recurseErr) {
return callback(recurseErr);
}

mkdirp(dirpath, mode, callback);
}
}

function mkdirpStream(opt) {

function makeFileDirs(file, enc, callback) {
// TODO: Can this be put on file.stat?
var dirMode = number(opt.dirMode, file);

mkdirp(file.dirname, dirMode, onMkdirp);

function onMkdirp(mkdirpErr) {
if (mkdirpErr) {
return callback(mkdirpErr);
}
callback(null, file);
}
}

return through.obj(makeFileDirs);
}

function createWriteStream(path, options, flush) {
return new WriteStream(path, options, flush);
}
Expand Down Expand Up @@ -471,7 +389,5 @@ module.exports = {
isOwner: isOwner,
updateMetadata: updateMetadata,
writeFile: writeFile,
mkdirp: mkdirp,
mkdirpStream: mkdirpStream,
createWriteStream: createWriteStream,
};
10 changes: 9 additions & 1 deletion lib/symlink/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ var prepare = require('vinyl-prepare');
var valueOrFunction = require('value-or-function');
var koalas = require('koalas');
var lead = require('lead');
var mkdirpStream = require('fs-mkdirp-stream');

var fo = require('../file-operations');

var number = valueOrFunction.number;
var boolean = valueOrFunction.boolean;

var isWindows = (os.platform() === 'win32');
Expand Down Expand Up @@ -74,9 +76,15 @@ function symlink(outFolder, opt) {
}
}

function dirpath(file, callback) {
var dirMode = number(opt.dirMode, file);

callback(null, file.dirname, dirMode);
}

var stream = pumpify.obj(
prepare.dest(outFolder, opt),
fo.mkdirpStream(opt),
mkdirpStream.obj(dirpath),
through.obj(linkFile)
);

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
},
"dependencies": {
"flush-write-stream": "^1.0.0",
"fs-mkdirp-stream": "^1.0.0",
"glob-stream": "^6.1.0",
"graceful-fs": "^4.0.0",
"is-valid-glob": "^0.3.0",
Expand Down
Loading

0 comments on commit 33ee92a

Please sign in to comment.