1
0
mirror of https://github.com/S2-/gitlit synced 2025-08-03 21:00:04 +02:00
Files
gitlit/app/node_modules/mksnapshot/lib/mksnapshot-path.js
2019-06-06 15:44:24 +02:00

87 lines
2.7 KiB
JavaScript

(function() {
var REPO_URL, downloadFileToLocation, fs, getPathOfMksnapshot, path, request, unzipFile;
fs = require('fs-extra');
path = require('path');
request = require('request');
REPO_URL = 'https://github.com/electron/electron';
downloadFileToLocation = function(url, filename, callback) {
var requestStream, stream;
stream = fs.createWriteStream(filename);
stream.on('close', callback);
stream.on('error', callback);
requestStream = request.get(url);
requestStream.on('error', callback);
return requestStream.on('response', function(response) {
if (response.statusCode === 200) {
return requestStream.pipe(stream);
} else {
return callback(new Error("Server responded " + response.statusCode));
}
});
};
unzipFile = function(zipPath, callback) {
var DecompressZip, unzipper;
DecompressZip = require('decompress-zip');
unzipper = new DecompressZip(zipPath);
unzipper.on('error', callback);
unzipper.on('extract', function() {
return callback(null);
});
return unzipper.extract({
path: path.dirname(zipPath)
});
};
getPathOfMksnapshot = function(version, arch, builddir, callback) {
var mksnapshot, versionFile;
mksnapshot = path.resolve(builddir, 'mksnapshot');
if (process.platform === 'win32') {
mksnapshot += '.exe';
}
versionFile = path.join(builddir, '.mksnapshot_version');
return fs.readFile(versionFile, function(error, currentVersion) {
if (!error && String(currentVersion).trim() === version) {
return callback(null, mksnapshot);
}
return fs.mkdirp(builddir, function(error) {
var filename, target, url;
if (error) {
return callback(error);
}
filename = "mksnapshot-v" + version + "-" + process.platform + "-" + arch + ".zip";
url = "" + REPO_URL + "/releases/download/v" + version + "/" + filename;
target = path.join(builddir, filename);
return downloadFileToLocation(url, target, function(error) {
if (error) {
return callback(error);
}
return unzipFile(target, function(error) {
if (error) {
return callback(error);
}
try {
if (process.platform !== 'win32') {
fs.chmodSync(mksnapshot, '755');
}
fs.writeFileSync(versionFile, version);
} catch (_error) {
error = _error;
return callback(error);
}
return callback(null, mksnapshot);
});
});
});
});
};
module.exports = getPathOfMksnapshot;
}).call(this);