mksnapshot-path.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. (function() {
  2. var REPO_URL, downloadFileToLocation, fs, getPathOfMksnapshot, path, request, unzipFile;
  3. fs = require('fs-extra');
  4. path = require('path');
  5. request = require('request');
  6. REPO_URL = 'https://github.com/electron/electron';
  7. downloadFileToLocation = function(url, filename, callback) {
  8. var requestStream, stream;
  9. stream = fs.createWriteStream(filename);
  10. stream.on('close', callback);
  11. stream.on('error', callback);
  12. requestStream = request.get(url);
  13. requestStream.on('error', callback);
  14. return requestStream.on('response', function(response) {
  15. if (response.statusCode === 200) {
  16. return requestStream.pipe(stream);
  17. } else {
  18. return callback(new Error("Server responded " + response.statusCode));
  19. }
  20. });
  21. };
  22. unzipFile = function(zipPath, callback) {
  23. var DecompressZip, unzipper;
  24. DecompressZip = require('decompress-zip');
  25. unzipper = new DecompressZip(zipPath);
  26. unzipper.on('error', callback);
  27. unzipper.on('extract', function() {
  28. return callback(null);
  29. });
  30. return unzipper.extract({
  31. path: path.dirname(zipPath)
  32. });
  33. };
  34. getPathOfMksnapshot = function(version, arch, builddir, callback) {
  35. var mksnapshot, versionFile;
  36. mksnapshot = path.resolve(builddir, 'mksnapshot');
  37. if (process.platform === 'win32') {
  38. mksnapshot += '.exe';
  39. }
  40. versionFile = path.join(builddir, '.mksnapshot_version');
  41. return fs.readFile(versionFile, function(error, currentVersion) {
  42. if (!error && String(currentVersion).trim() === version) {
  43. return callback(null, mksnapshot);
  44. }
  45. return fs.mkdirp(builddir, function(error) {
  46. var filename, target, url;
  47. if (error) {
  48. return callback(error);
  49. }
  50. filename = "mksnapshot-v" + version + "-" + process.platform + "-" + arch + ".zip";
  51. url = "" + REPO_URL + "/releases/download/v" + version + "/" + filename;
  52. target = path.join(builddir, filename);
  53. return downloadFileToLocation(url, target, function(error) {
  54. if (error) {
  55. return callback(error);
  56. }
  57. return unzipFile(target, function(error) {
  58. if (error) {
  59. return callback(error);
  60. }
  61. try {
  62. if (process.platform !== 'win32') {
  63. fs.chmodSync(mksnapshot, '755');
  64. }
  65. fs.writeFileSync(versionFile, version);
  66. } catch (_error) {
  67. error = _error;
  68. return callback(error);
  69. }
  70. return callback(null, mksnapshot);
  71. });
  72. });
  73. });
  74. });
  75. };
  76. module.exports = getPathOfMksnapshot;
  77. }).call(this);