UNPKG

electron-forge

Version:

A complete tool for building modern Electron applications

268 lines (209 loc) 9.82 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _bluebird = require('bluebird'); var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug); var _nodeFetch = require('node-fetch'); var _nodeFetch2 = _interopRequireDefault(_nodeFetch); var _formData = require('form-data'); var _formData2 = _interopRequireDefault(_formData); var _fsExtra = require('fs-extra'); var _fsExtra2 = _interopRequireDefault(_fsExtra); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _oraHandler = require('../util/ora-handler'); var _oraHandler2 = _interopRequireDefault(_oraHandler); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var d = (0, _debug2.default)('electron-forge:publish:ers'); var ersPlatform = function ersPlatform(platform, arch) { switch (platform) { case 'darwin': return 'osx_64'; case 'linux': return arch === 'ia32' ? 'linux_32' : 'linux_64'; case 'win32': return arch === 'ia32' ? 'windows_32' : 'windows_64'; default: return platform; } }; exports.default = function () { var _ref = (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee3(artifacts, packageJSON, forgeConfig, authToken, tag, platform, arch) { var ersConfig, api, _ref2, token, authFetch, versions, existingVersion, channel, uploaded; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: ersConfig = forgeConfig.electronReleaseServer; if (ersConfig.baseUrl && ersConfig.username && ersConfig.password) { _context3.next = 3; break; } throw 'In order to publish to ERS you must set the "electronReleaseServer.baseUrl", "electronReleaseServer.username" and "electronReleaseServer.password" properties in your forge config. See the docs for more info'; case 3: d('attempting to authenticate to ERS'); api = function api(apiPath) { return ersConfig.baseUrl + '/' + apiPath; }; _context3.next = 7; return (0, _nodeFetch2.default)(api('api/auth/login'), { method: 'POST', body: (0, _stringify2.default)({ username: ersConfig.username, password: ersConfig.password }), headers: { 'Content-Type': 'application/json' } }); case 7: _context3.next = 9; return _context3.sent.json(); case 9: _ref2 = _context3.sent; token = _ref2.token; authFetch = function authFetch(apiPath, options) { return (0, _nodeFetch2.default)(api(apiPath), (0, _assign2.default)({}, options || {}, { headers: (0, _assign2.default)({}, (options || {}).headers, { Authorization: 'Bearer ' + token }) })); }; _context3.next = 14; return authFetch('api/version'); case 14: _context3.next = 16; return _context3.sent.json(); case 16: versions = _context3.sent; existingVersion = versions.find(function (version) { return version.name === packageJSON.version; }); channel = 'stable'; if (packageJSON.version.indexOf('beta') !== -1) { channel = 'beta'; } if (packageJSON.version.indexOf('alpha') !== -1) { channel = 'alpha'; } if (existingVersion) { _context3.next = 24; break; } _context3.next = 24; return authFetch('api/version', { method: 'POST', body: (0, _stringify2.default)({ channel: { name: channel }, name: packageJSON.version, notes: '' }), headers: { 'Content-Type': 'application/json' } }); case 24: uploaded = 0; _context3.next = 27; return (0, _oraHandler2.default)('Uploading Artifacts ' + uploaded + '/' + artifacts.length, function () { var _ref3 = (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee2(uploadSpinner) { var updateSpinner; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: updateSpinner = function updateSpinner() { uploadSpinner.text = 'Uploading Artifacts ' + uploaded + '/' + artifacts.length; // eslint-disable-line no-param-reassign }; _context2.next = 3; return _promise2.default.all(artifacts.map(function (artifactPath) { return new _promise2.default(function () { var _ref4 = (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee(resolve, reject) { var existingAsset, artifactForm; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!existingVersion) { _context.next = 7; break; } existingAsset = existingVersion.assets.find(function (asset) { return asset.name === _path2.default.basename(artifactPath); }); if (!existingAsset) { _context.next = 7; break; } d('asset at path:', artifactPath, 'already exists on server'); uploaded += 1; updateSpinner(); return _context.abrupt('return'); case 7: _context.prev = 7; d('attempting to upload asset:', artifactPath); artifactForm = new _formData2.default(); artifactForm.append('token', token); artifactForm.append('version', packageJSON.version); artifactForm.append('platform', ersPlatform(platform, arch)); artifactForm.append('file', _fsExtra2.default.createReadStream(artifactPath)); _context.next = 16; return authFetch('api/asset', { method: 'POST', body: artifactForm, headers: artifactForm.getHeaders() }); case 16: d('upload successful for asset:', artifactPath); uploaded += 1; updateSpinner(); _context.next = 24; break; case 21: _context.prev = 21; _context.t0 = _context['catch'](7); reject(_context.t0); case 24: case 'end': return _context.stop(); } } }, _callee, undefined, [[7, 21]]); })); return function (_x9, _x10) { return _ref4.apply(this, arguments); }; }()); })); case 3: case 'end': return _context2.stop(); } } }, _callee2, undefined); })); return function (_x8) { return _ref3.apply(this, arguments); }; }()); case 27: case 'end': return _context3.stop(); } } }, _callee3, undefined); })); return function (_x, _x2, _x3, _x4, _x5, _x6, _x7) { return _ref.apply(this, arguments); }; }();