UNPKG

pkg-fetch

Version:

Github Releases page of this project contains base binaries, used by `pkg` to create executables. `pkg-fetch` npm package downloads base binaries or compiles them from source.

392 lines (303 loc) 11.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Cloud = undefined; var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _fsExtra = require('fs-extra'); var _github = require('./github.js'); var _assert = require('assert'); var _assert2 = _interopRequireDefault(_assert); var _copyFile = require('./copy-file.js'); var _path = require('path'); var _path2 = _interopRequireDefault(_path); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function uniqueName(name, names) { if (names.indexOf(name) < 0) return name; var newName = void 0; var counter = 0; while (true) { newName = name + '-new-' + counter; if (names.indexOf(newName) < 0) return newName; counter += 1; } } var Cloud = exports.Cloud = function () { function Cloud(_ref) { var owner = _ref.owner, repo = _ref.repo; (0, _classCallCheck3.default)(this, Cloud); this.gh = new _github.GitHub({ owner: owner, repo: repo }); } (0, _createClass3.default)(Cloud, [{ key: 'upload', value: function () { var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(local, remote) { var tag, release, names, name; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: tag = remote.tag; _context.next = 3; return this.gh.getRelease(tag); case 3: release = _context.sent; if (release) { _context.next = 8; break; } _context.next = 7; return this.gh.getReleaseDraft(tag); case 7: release = _context.sent; case 8: if (release) { _context.next = 12; break; } _context.next = 11; return this.gh.createRelease(tag); case 11: release = _context.sent; case 12: names = release.assets.map(function (_ref3) { var name = _ref3.name; (0, _assert2.default)(name); return name; }); name = uniqueName(remote.name, names); _context.next = 16; return this.gh.uploadAsset(local, release, name); case 16: case 'end': return _context.stop(); } } }, _callee, this); })); function upload(_x, _x2) { return _ref2.apply(this, arguments); } return upload; }() }, { key: 'uploadMany', value: function () { var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(items) { var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, local, remote; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; _context2.prev = 3; _iterator = (0, _getIterator3.default)(items); case 5: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { _context2.next = 13; break; } item = _step.value; local = item.local, remote = item.remote; _context2.next = 10; return this.upload(local, remote); case 10: _iteratorNormalCompletion = true; _context2.next = 5; break; case 13: _context2.next = 19; break; case 15: _context2.prev = 15; _context2.t0 = _context2['catch'](3); _didIteratorError = true; _iteratorError = _context2.t0; case 19: _context2.prev = 19; _context2.prev = 20; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } case 22: _context2.prev = 22; if (!_didIteratorError) { _context2.next = 25; break; } throw _iteratorError; case 25: return _context2.finish(22); case 26: return _context2.finish(19); case 27: case 'end': return _context2.stop(); } } }, _callee2, this, [[3, 15, 19, 27], [20,, 22, 26]]); })); function uploadMany(_x3) { return _ref4.apply(this, arguments); } return uploadMany; }() }, { key: 'download', value: function () { var _ref5 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(remote, local) { var tag, tempFile, short, ok, release, assets, asset; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: tag = remote.tag; tempFile = local + '.downloading'; _context3.next = 4; return (0, _fsExtra.mkdirp)(_path2.default.dirname(tempFile)); case 4: short = _path2.default.basename(local); _context3.next = 7; return this.gh.tryDirectly(tag, remote.name, tempFile, short); case 7: ok = _context3.sent; if (ok) { _context3.next = 25; break; } _context3.next = 11; return this.gh.getRelease(tag); case 11: release = _context3.sent; if (release) { _context3.next = 16; break; } _context3.next = 15; return this.gh.getReleaseDraft(tag); case 15: release = _context3.sent; case 16: if (release) { _context3.next = 18; break; } return _context3.abrupt('return', false); case 18: assets = release.assets.filter(function (_ref6) { var name = _ref6.name; (0, _assert2.default)(name); return name === remote.name; }); if (assets.length) { _context3.next = 21; break; } return _context3.abrupt('return', false); case 21: (0, _assert2.default)(assets.length === 1); asset = assets[0]; _context3.next = 25; return this.gh.downloadUrl(asset.url, tempFile, short); case 25: _context3.next = 27; return (0, _fsExtra.remove)(local); case 27: _context3.next = 29; return (0, _copyFile.moveFile)(tempFile, local); case 29: _context3.next = 31; return (0, _fsExtra.remove)(tempFile); case 31: return _context3.abrupt('return', true); case 32: case 'end': return _context3.stop(); } } }, _callee3, this); })); function download(_x4, _x5) { return _ref5.apply(this, arguments); } return download; }() }, { key: 'downloadMany', value: function () { var _ref7 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4(items) { var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, item, remote, local; return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _iteratorNormalCompletion2 = true; _didIteratorError2 = false; _iteratorError2 = undefined; _context4.prev = 3; _iterator2 = (0, _getIterator3.default)(items); case 5: if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) { _context4.next = 13; break; } item = _step2.value; remote = item.remote, local = item.local; _context4.next = 10; return this.download(remote, local); case 10: _iteratorNormalCompletion2 = true; _context4.next = 5; break; case 13: _context4.next = 19; break; case 15: _context4.prev = 15; _context4.t0 = _context4['catch'](3); _didIteratorError2 = true; _iteratorError2 = _context4.t0; case 19: _context4.prev = 19; _context4.prev = 20; if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } case 22: _context4.prev = 22; if (!_didIteratorError2) { _context4.next = 25; break; } throw _iteratorError2; case 25: return _context4.finish(22); case 26: return _context4.finish(19); case 27: case 'end': return _context4.stop(); } } }, _callee4, this, [[3, 15, 19, 27], [20,, 22, 26]]); })); function downloadMany(_x6) { return _ref7.apply(this, arguments); } return downloadMany; }() }]); return Cloud; }();