Current Dev State

This commit is contained in:
Tim Lorsbach
2025-06-23 20:13:54 +02:00
parent b4f9bb277d
commit ded50edaa2
22617 changed files with 4345095 additions and 174 deletions

View File

@ -0,0 +1,59 @@
'use strict';
var fs = require('fs');
var writeDir = require('./writeDir');
var writeStream = require('./writeStream');
var writeBuffer = require('./writeBuffer');
function writeContents(writePath, file, cb) {
var written = function(err) {
var done = function(err) {
cb(err, file);
};
if (err) {
return done(err);
}
if (!file.stat || typeof file.stat.mode !== 'number') {
return done();
}
fs.stat(writePath, function(err, st) {
if (err) {
return done(err);
}
// octal 7777 = decimal 4095
var currentMode = (st.mode & 4095);
if (currentMode === file.stat.mode) {
return done();
}
fs.chmod(writePath, file.stat.mode, done);
});
};
// if directory then mkdirp it
if (file.isDirectory()) {
writeDir(writePath, file, written);
return;
}
// stream it to disk yo
if (file.isStream()) {
writeStream(writePath, file, written);
return;
}
// write it like normal
if (file.isBuffer()) {
writeBuffer(writePath, file, written);
return;
}
// if no contents then do nothing
if (file.isNull()) {
cb(null, file);
return;
}
}
module.exports = writeContents;

View File

@ -0,0 +1,13 @@
'use strict';
var fs = require('graceful-fs');
function writeBuffer(writePath, file, cb) {
var opt = {
mode: file.stat.mode
};
fs.writeFile(writePath, file.contents, opt, cb);
}
module.exports = writeBuffer;

View File

@ -0,0 +1,9 @@
'use strict';
var mkdirp = require('mkdirp');
function writeDir (writePath, file, cb) {
mkdirp(writePath, file.stat.mode, cb);
}
module.exports = writeDir;

View File

@ -0,0 +1,22 @@
'use strict';
var streamFile = require('../../src/getContents/streamFile');
var fs = require('graceful-fs');
function writeStream (writePath, file, cb) {
var opt = {
mode: file.stat.mode
};
var outStream = fs.createWriteStream(writePath, opt);
file.contents.once('error', cb);
outStream.once('error', cb);
outStream.once('finish', function() {
streamFile(file, cb);
});
file.contents.pipe(outStream);
}
module.exports = writeStream;