Newer
Older
CVSS_3.0_GUI / dist / CVSS_3.0_Calc-1.0.0-linux-x64 / node_modules / nwjs-builder-phoenix / node_modules / dir-compare / tests / untar.js
root on 7 May 2019 2 KB Initial commit
  1. var tar = require('tar-fs');
  2. var fs = require('fs');
  3. var pathUtils = require('path');
  4.  
  5. var extractFiles = function(tarFile, output, onExtracted, onError){
  6.  
  7. var extractLinks = function(){
  8. var linkExtractor = tar.extract(output, {
  9. ignore : function(_, header){
  10. // use the 'ignore' handler for symlink creation.
  11. if(header.type==='symlink'){
  12. var target;
  13. if(process.platform==='win32'){
  14. // Absolute symlinks
  15. target = pathUtils.join(output, pathUtils.dirname(header.name), header.linkname);
  16. } else{
  17. // Relative symlinks
  18. target = header.linkname;
  19. }
  20.  
  21.  
  22. var linkPath = pathUtils.join(output, header.name);
  23. if(!fs.existsSync(linkPath)){
  24. if(fs.existsSync(target)){
  25. var statTarget = fs.statSync(target);
  26. if(statTarget.isFile()){
  27. fs.symlinkSync(target, linkPath, 'file');
  28. } else if(statTarget.isDirectory()){
  29. fs.symlinkSync(target, linkPath, 'junction');
  30. } else{
  31. throw 'unsupported';
  32. }
  33. } else{
  34. fs.symlinkSync(target, linkPath, 'junction');
  35. }
  36. }
  37. }
  38. return true;
  39. }
  40. }).on('error', onError).on('finish', onExtracted);
  41. fs.createReadStream(tarFile).on('error', onError).pipe(linkExtractor);
  42. }
  43.  
  44. var fileExtractor = tar.extract(output, {
  45. ignore : function(_, header){
  46. if(header.type==='symlink'){
  47. return true;
  48. } else{
  49. return false;
  50. }
  51. }
  52. }).on('error', onError).on('finish', extractLinks);
  53. fs.createReadStream(tarFile).on('error', onError).pipe(fileExtractor);
  54. }
  55.  
  56. var untar = function(tarFile, output, onExtracted, onError){
  57. extractFiles(tarFile, output, onExtracted, onError);
  58. }
  59.  
  60. module.exports = untar;
Buy Me A Coffee