1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- '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;
|