1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 'use strict';
- var through = require('through2');
- var writeDir = require('./write-dir');
- var writeStream = require('./write-stream');
- var writeBuffer = require('./write-buffer');
- var writeSymbolicLink = require('./write-symbolic-link');
- var fo = require('../../file-operations');
- function writeContents(optResolver) {
- function writeFile(file, enc, callback) {
- // Write it as a symlink
- if (file.isSymbolic()) {
- return writeSymbolicLink(file, optResolver, onWritten);
- }
- // If directory then mkdirp it
- if (file.isDirectory()) {
- return writeDir(file, optResolver, onWritten);
- }
- // Stream it to disk yo
- if (file.isStream()) {
- return writeStream(file, optResolver, onWritten);
- }
- // Write it like normal
- if (file.isBuffer()) {
- return writeBuffer(file, optResolver, onWritten);
- }
- // If no contents then do nothing
- if (file.isNull()) {
- return onWritten();
- }
- // This is invoked by the various writeXxx modules when they've finished
- // writing the contents.
- function onWritten(writeErr) {
- var flags = fo.getFlags({
- overwrite: optResolver.resolve('overwrite', file),
- append: optResolver.resolve('append', file),
- });
- if (fo.isFatalOverwriteError(writeErr, flags)) {
- return callback(writeErr);
- }
- callback(null, file);
- }
- }
- return through.obj(writeFile);
- }
- module.exports = writeContents;
|