Repositorio del curso CCOM4030 el semestre B91 del proyecto Artesanías con el Instituto de Cultura

mkdir.js 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. var common = require('./common');
  2. var fs = require('fs');
  3. var path = require('path');
  4. // Recursively creates 'dir'
  5. function mkdirSyncRecursive(dir) {
  6. var baseDir = path.dirname(dir);
  7. // Base dir exists, no recursion necessary
  8. if (fs.existsSync(baseDir)) {
  9. fs.mkdirSync(dir, parseInt('0777', 8));
  10. return;
  11. }
  12. // Base dir does not exist, go recursive
  13. mkdirSyncRecursive(baseDir);
  14. // Base dir created, can create dir
  15. fs.mkdirSync(dir, parseInt('0777', 8));
  16. }
  17. //@
  18. //@ ### mkdir([options ,] dir [, dir ...])
  19. //@ ### mkdir([options ,] dir_array)
  20. //@ Available options:
  21. //@
  22. //@ + `p`: full path (will create intermediate dirs if necessary)
  23. //@
  24. //@ Examples:
  25. //@
  26. //@ ```javascript
  27. //@ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');
  28. //@ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above
  29. //@ ```
  30. //@
  31. //@ Creates directories.
  32. function _mkdir(options, dirs) {
  33. options = common.parseOptions(options, {
  34. 'p': 'fullpath'
  35. });
  36. if (!dirs)
  37. common.error('no paths given');
  38. if (typeof dirs === 'string')
  39. dirs = [].slice.call(arguments, 1);
  40. // if it's array leave it as it is
  41. dirs.forEach(function(dir) {
  42. if (fs.existsSync(dir)) {
  43. if (!options.fullpath)
  44. common.error('path already exists: ' + dir, true);
  45. return; // skip dir
  46. }
  47. // Base dir does not exist, and no -p option given
  48. var baseDir = path.dirname(dir);
  49. if (!fs.existsSync(baseDir) && !options.fullpath) {
  50. common.error('no such file or directory: ' + baseDir, true);
  51. return; // skip dir
  52. }
  53. if (options.fullpath)
  54. mkdirSyncRecursive(dir);
  55. else
  56. fs.mkdirSync(dir, parseInt('0777', 8));
  57. });
  58. } // mkdir
  59. module.exports = _mkdir;