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

ln.js 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. var fs = require('fs');
  2. var path = require('path');
  3. var common = require('./common');
  4. var os = require('os');
  5. //@
  6. //@ ### ln(options, source, dest)
  7. //@ ### ln(source, dest)
  8. //@ Available options:
  9. //@
  10. //@ + `s`: symlink
  11. //@ + `f`: force
  12. //@
  13. //@ Examples:
  14. //@
  15. //@ ```javascript
  16. //@ ln('file', 'newlink');
  17. //@ ln('-sf', 'file', 'existing');
  18. //@ ```
  19. //@
  20. //@ Links source to dest. Use -f to force the link, should dest already exist.
  21. function _ln(options, source, dest) {
  22. options = common.parseOptions(options, {
  23. 's': 'symlink',
  24. 'f': 'force'
  25. });
  26. if (!source || !dest) {
  27. common.error('Missing <source> and/or <dest>');
  28. }
  29. source = path.resolve(process.cwd(), String(source));
  30. dest = path.resolve(process.cwd(), String(dest));
  31. if (!fs.existsSync(source)) {
  32. common.error('Source file does not exist', true);
  33. }
  34. if (fs.existsSync(dest)) {
  35. if (!options.force) {
  36. common.error('Destination file exists', true);
  37. }
  38. fs.unlinkSync(dest);
  39. }
  40. if (options.symlink) {
  41. fs.symlinkSync(source, dest, os.platform() === "win32" ? "junction" : null);
  42. } else {
  43. fs.linkSync(source, dest, os.platform() === "win32" ? "junction" : null);
  44. }
  45. }
  46. module.exports = _ln;