writeDir.js 965 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict';
  2. var fs = require('graceful-fs');
  3. var mkdirp = require('mkdirp');
  4. var fo = require('../../fileOperations');
  5. function writeDir(writePath, file, written) {
  6. var mkdirpOpts = {
  7. mode: file.stat.mode,
  8. fs: fs,
  9. };
  10. mkdirp(writePath, mkdirpOpts, onMkdirp);
  11. function onMkdirp(mkdirpErr) {
  12. if (mkdirpErr) {
  13. return written(mkdirpErr);
  14. }
  15. fs.open(writePath, 'r', onOpen);
  16. }
  17. function onOpen(openErr, fd) {
  18. // If we don't have access, just move along
  19. if (isInaccessible(openErr)) {
  20. return fo.closeFd(null, fd, written);
  21. }
  22. if (openErr) {
  23. return fo.closeFd(openErr, fd, written);
  24. }
  25. fo.updateMetadata(fd, file, onUpdate);
  26. }
  27. function onUpdate(statErr, fd) {
  28. fo.closeFd(statErr, fd, written);
  29. }
  30. }
  31. function isInaccessible(err) {
  32. if (!err) {
  33. return false;
  34. }
  35. if (err.code === 'EACCES') {
  36. return true;
  37. }
  38. return false;
  39. }
  40. module.exports = writeDir;