gnumake
Version:
cross platform gnu make
97 lines (75 loc) • 8.04 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
require("core-js/modules/es.promise");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _fs = _interopRequireDefault(require("fs"));
var _https = _interopRequireDefault(require("https"));
var _path = _interopRequireDefault(require("path"));
var _tar = _interopRequireDefault(require("tar"));
var _where = _interopRequireDefault(require("./where"));
const options = {
version: '3.75'
};
function downloadStream(_x) {
return _downloadStream.apply(this, arguments);
}
function _downloadStream() {
_downloadStream = (0, _asyncToGenerator2.default)(function* (url) {
return new Promise((resolve, reject) => {
_https.default.request(url, res => {
if (res.statusCode === 200) {
return resolve(res);
}
if ((res.statusCode === 301 || res.statusCode === 302) && res.headers.location) {
return resolve(downloadStream(res.headers.location));
}
return reject(res.statusCode);
}).on('error', err => {
reject(err);
}).end();
});
});
return _downloadStream.apply(this, arguments);
}
function download(_x2, _x3) {
return _download.apply(this, arguments);
}
function _download() {
_download = (0, _asyncToGenerator2.default)(function* (url, outputPath) {
const stream = yield downloadStream(url);
yield new Promise((resolve, reject) => {
try {
const file = _fs.default.createWriteStream(outputPath);
stream.pipe(file);
return file.on('finish', () => {
file.close();
return resolve();
});
} catch (err) {
return reject(err);
}
});
});
return _download.apply(this, arguments);
}
function install() {
return _install.apply(this, arguments);
}
function _install() {
_install = (0, _asyncToGenerator2.default)(function* () {
if (yield (0, _where.default)('make')) return;
const binPath = _path.default.resolve(__dirname, '../bin');
const tarPath = _path.default.resolve(binPath, 'make.tar.gz');
const url = `https://github.com/codejamninja/portable-make/releases/download/${options.version}/make-${process.platform}-${options.version}.tar.gz`;
process.stdout.write(`downloading -> ${url}\n`);
yield download(url, tarPath);
process.stdout.write(`extracting -> ${tarPath}\n`);
yield _tar.default.x({
C: binPath,
file: tarPath
});
});
return _install.apply(this, arguments);
}
install().catch(console.error);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnN0YWxsLnRzIl0sIm5hbWVzIjpbIm9wdGlvbnMiLCJ2ZXJzaW9uIiwiZG93bmxvYWRTdHJlYW0iLCJ1cmwiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImh0dHBzIiwicmVxdWVzdCIsInJlcyIsInN0YXR1c0NvZGUiLCJoZWFkZXJzIiwibG9jYXRpb24iLCJvbiIsImVyciIsImVuZCIsImRvd25sb2FkIiwib3V0cHV0UGF0aCIsInN0cmVhbSIsImZpbGUiLCJmcyIsImNyZWF0ZVdyaXRlU3RyZWFtIiwicGlwZSIsImNsb3NlIiwiaW5zdGFsbCIsImJpblBhdGgiLCJwYXRoIiwiX19kaXJuYW1lIiwidGFyUGF0aCIsInByb2Nlc3MiLCJwbGF0Zm9ybSIsInN0ZG91dCIsIndyaXRlIiwidGFyIiwieCIsIkMiLCJjYXRjaCIsImNvbnNvbGUiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQSxNQUFNQSxPQUFPLEdBQUc7QUFDZEMsRUFBQUEsT0FBTyxFQUFFO0FBREssQ0FBaEI7O1NBSWVDLGM7Ozs7O29EQUFmLFdBQThCQyxHQUE5QixFQUFxRTtBQUNuRSxXQUFPLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDdENDLHFCQUNHQyxPQURILENBQ1dMLEdBRFgsRUFDaUJNLEdBQUQsSUFBMEI7QUFDdEMsWUFBSUEsR0FBRyxDQUFDQyxVQUFKLEtBQW1CLEdBQXZCLEVBQTRCO0FBQzFCLGlCQUFPTCxPQUFPLENBQUNJLEdBQUQsQ0FBZDtBQUNEOztBQUNELFlBQ0UsQ0FBQ0EsR0FBRyxDQUFDQyxVQUFKLEtBQW1CLEdBQW5CLElBQTBCRCxHQUFHLENBQUNDLFVBQUosS0FBbUIsR0FBOUMsS0FDQUQsR0FBRyxDQUFDRSxPQUFKLENBQVlDLFFBRmQsRUFHRTtBQUNBLGlCQUFPUCxPQUFPLENBQUNILGNBQWMsQ0FBQ08sR0FBRyxDQUFDRSxPQUFKLENBQVlDLFFBQWIsQ0FBZixDQUFkO0FBQ0Q7O0FBQ0QsZUFBT04sTUFBTSxDQUFDRyxHQUFHLENBQUNDLFVBQUwsQ0FBYjtBQUNELE9BWkgsRUFhR0csRUFiSCxDQWFNLE9BYk4sRUFhZ0JDLEdBQUQsSUFBZ0I7QUFDM0JSLFFBQUFBLE1BQU0sQ0FBQ1EsR0FBRCxDQUFOO0FBQ0QsT0FmSCxFQWdCR0MsR0FoQkg7QUFpQkQsS0FsQk0sQ0FBUDtBQW1CRCxHOzs7O1NBRWNDLFE7Ozs7OzhDQUFmLFdBQXdCYixHQUF4QixFQUFxQ2MsVUFBckMsRUFBd0U7QUFDdEUsVUFBTUMsTUFBTSxTQUFTaEIsY0FBYyxDQUFDQyxHQUFELENBQW5DO0FBQ0EsVUFBTSxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3JDLFVBQUk7QUFDRixjQUFNYSxJQUFJLEdBQUdDLFlBQUdDLGlCQUFILENBQXFCSixVQUFyQixDQUFiOztBQUNBQyxRQUFBQSxNQUFNLENBQUNJLElBQVAsQ0FBWUgsSUFBWjtBQUNBLGVBQU9BLElBQUksQ0FBQ04sRUFBTCxDQUFRLFFBQVIsRUFBa0IsTUFBTTtBQUM3Qk0sVUFBQUEsSUFBSSxDQUFDSSxLQUFMO0FBQ0EsaUJBQU9sQixPQUFPLEVBQWQ7QUFDRCxTQUhNLENBQVA7QUFJRCxPQVBELENBT0UsT0FBT1MsR0FBUCxFQUFZO0FBQ1osZUFBT1IsTUFBTSxDQUFDUSxHQUFELENBQWI7QUFDRDtBQUNGLEtBWEssQ0FBTjtBQVlELEc7Ozs7U0FFY1UsTzs7Ozs7NkNBQWYsYUFBeUI7QUFDdkIsY0FBVSxvQkFBTSxNQUFOLENBQVYsRUFBeUI7O0FBQ3pCLFVBQU1DLE9BQU8sR0FBR0MsY0FBS3JCLE9BQUwsQ0FBYXNCLFNBQWIsRUFBd0IsUUFBeEIsQ0FBaEI7O0FBQ0EsVUFBTUMsT0FBTyxHQUFHRixjQUFLckIsT0FBTCxDQUFhb0IsT0FBYixFQUFzQixhQUF0QixDQUFoQjs7QUFDQSxVQUFNdEIsR0FBRyxHQUFJLG1FQUFrRUgsT0FBTyxDQUFDQyxPQUFRLFNBQVE0QixPQUFPLENBQUNDLFFBQVMsSUFBRzlCLE9BQU8sQ0FBQ0MsT0FBUSxTQUEzSTtBQUNBNEIsSUFBQUEsT0FBTyxDQUFDRSxNQUFSLENBQWVDLEtBQWYsQ0FBc0Isa0JBQWlCN0IsR0FBSSxJQUEzQztBQUNBLFVBQU1hLFFBQVEsQ0FBQ2IsR0FBRCxFQUFNeUIsT0FBTixDQUFkO0FBQ0FDLElBQUFBLE9BQU8sQ0FBQ0UsTUFBUixDQUFlQyxLQUFmLENBQXNCLGlCQUFnQkosT0FBUSxJQUE5QztBQUNBLFVBQU1LLGFBQUlDLENBQUosQ0FBTTtBQUNWQyxNQUFBQSxDQUFDLEVBQUVWLE9BRE87QUFFVk4sTUFBQUEsSUFBSSxFQUFFUztBQUZJLEtBQU4sQ0FBTjtBQUlELEc7Ozs7QUFFREosT0FBTyxHQUFHWSxLQUFWLENBQWdCQyxPQUFPLENBQUNDLEtBQXhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB0YXIgZnJvbSAndGFyJztcbmltcG9ydCB7IEluY29taW5nTWVzc2FnZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IHdoZXJlIGZyb20gJy4vd2hlcmUnO1xuXG5jb25zdCBvcHRpb25zID0ge1xuICB2ZXJzaW9uOiAnMy43NScsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZFN0cmVhbSh1cmw6IHN0cmluZyk6IFByb21pc2U8SW5jb21pbmdNZXNzYWdlPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaHR0cHNcbiAgICAgIC5yZXF1ZXN0KHVybCwgKHJlczogSW5jb21pbmdNZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKHJlcy5zdGF0dXNDb2RlID09PSAzMDEgfHwgcmVzLnN0YXR1c0NvZGUgPT09IDMwMikgJiZcbiAgICAgICAgICByZXMuaGVhZGVycy5sb2NhdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkb3dubG9hZFN0cmVhbShyZXMuaGVhZGVycy5sb2NhdGlvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWplY3QocmVzLnN0YXR1c0NvZGUpO1xuICAgICAgfSlcbiAgICAgIC5vbignZXJyb3InLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0pXG4gICAgICAuZW5kKCk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZCh1cmw6IHN0cmluZywgb3V0cHV0UGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHN0cmVhbSA9IGF3YWl0IGRvd25sb2FkU3RyZWFtKHVybCk7XG4gIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKG91dHB1dFBhdGgpO1xuICAgICAgc3RyZWFtLnBpcGUoZmlsZSk7XG4gICAgICByZXR1cm4gZmlsZS5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgICBmaWxlLmNsb3NlKCk7XG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICB9XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsKCkge1xuICBpZiAoYXdhaXQgd2hlcmUoJ21ha2UnKSkgcmV0dXJuO1xuICBjb25zdCBiaW5QYXRoID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uL2JpbicpO1xuICBjb25zdCB0YXJQYXRoID0gcGF0aC5yZXNvbHZlKGJpblBhdGgsICdtYWtlLnRhci5neicpO1xuICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9naXRodWIuY29tL2NvZGVqYW1uaW5qYS9wb3J0YWJsZS1tYWtlL3JlbGVhc2VzL2Rvd25sb2FkLyR7b3B0aW9ucy52ZXJzaW9ufS9tYWtlLSR7cHJvY2Vzcy5wbGF0Zm9ybX0tJHtvcHRpb25zLnZlcnNpb259LnRhci5nemA7XG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBkb3dubG9hZGluZyAtPiAke3VybH1cXG5gKTtcbiAgYXdhaXQgZG93bmxvYWQodXJsLCB0YXJQYXRoKTtcbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYGV4dHJhY3RpbmcgLT4gJHt0YXJQYXRofVxcbmApO1xuICBhd2FpdCB0YXIueCh7XG4gICAgQzogYmluUGF0aCxcbiAgICBmaWxlOiB0YXJQYXRoLFxuICB9KTtcbn1cblxuaW5zdGFsbCgpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuIl19