52 lines
927 B
JavaScript
52 lines
927 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var fs = require('graceful-fs');
|
||
|
|
||
|
var mkdirp = require('fs-mkdirp-stream/mkdirp');
|
||
|
|
||
|
var fo = require('../../file-operations');
|
||
|
|
||
|
function writeDir(file, optResolver, onWritten) {
|
||
|
mkdirp(file.path, file.stat.mode, onMkdirp);
|
||
|
|
||
|
function onMkdirp(mkdirpErr) {
|
||
|
if (mkdirpErr) {
|
||
|
return onWritten(mkdirpErr);
|
||
|
}
|
||
|
|
||
|
fs.open(file.path, 'r', onOpen);
|
||
|
}
|
||
|
|
||
|
function onOpen(openErr, fd) {
|
||
|
// If we don't have access, just move along
|
||
|
if (isInaccessible(openErr)) {
|
||
|
return fo.closeFd(null, fd, onWritten);
|
||
|
}
|
||
|
|
||
|
if (openErr) {
|
||
|
return fo.closeFd(openErr, fd, onWritten);
|
||
|
}
|
||
|
|
||
|
fo.updateMetadata(fd, file, onUpdate);
|
||
|
|
||
|
function onUpdate(updateErr) {
|
||
|
fo.closeFd(updateErr, fd, onWritten);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
function isInaccessible(err) {
|
||
|
if (!err) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
if (err.code === 'EACCES') {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
module.exports = writeDir;
|