electron-forge
Version:
A complete tool for building modern Electron applications
168 lines (130 loc) • 13.7 kB
JavaScript
;
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 _bluebird = require('bluebird');
var _awsSdk = require('aws-sdk');
var _awsSdk2 = _interopRequireDefault(_awsSdk);
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _s = require('s3');
var _s2 = _interopRequireDefault(_s);
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:s3');
_awsSdk2.default.util.update(_awsSdk2.default.S3.prototype, {
addExpect100Continue: function addExpect100Continue() {
// Hack around large upload issue: https://github.com/andrewrk/node-s3-client/issues/74
}
});
exports.default = function () {
var _ref = (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee3(artifacts, packageJSON, forgeConfig, authToken, tag) {
var s3Config, client, folder, uploaded;
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
s3Config = forgeConfig.s3;
s3Config.secretAccessKey = s3Config.secretAccessKey || authToken;
if (s3Config.accessKeyId && s3Config.secretAccessKey && s3Config.bucket) {
_context3.next = 4;
break;
}
throw 'In order to publish to s3 you must set the "s3.accessKeyId", "process.env.ELECTRON_FORGE_S3_SECRET_ACCESS_KEY" and "s3.bucket" properties in your forge config. See the docs for more info';
case 4:
d('creating s3 client with options:', s3Config);
client = _s2.default.createClient({
s3Client: new _awsSdk2.default.S3({
accessKeyId: s3Config.accessKeyId || process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: s3Config.secretAccessKey || process.env.AWS_SECRET_ACCESS_KEY
})
});
client.s3.addExpect100Continue = function () {};
folder = s3Config.folder || tag || packageJSON.version;
uploaded = 0;
_context3.next = 11;
return (0, _oraHandler2.default)('Uploading Artifacts ' + uploaded + '/' + artifacts.length, function () {
var _ref2 = (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
};
_context2.next = 3;
return _promise2.default.all(artifacts.map(function (artifactPath) {
return new _promise2.default(function () {
var _ref3 = (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee(resolve, reject) {
var done, uploader;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
done = function done(err) {
if (err) return reject(err);
uploaded += 1;
updateSpinner();
resolve();
};
uploader = client.uploadFile({
localFile: artifactPath,
s3Params: {
Bucket: s3Config.bucket,
Key: folder + '/' + _path2.default.basename(artifactPath),
ACL: s3Config.public ? 'public-read' : 'private'
}
});
d('uploading:', artifactPath);
uploader.on('error', function (err) {
return done(err);
});
uploader.on('progress', function () {
d('Upload Progress (' + _path2.default.basename(artifactPath) + ') ' + Math.round(uploader.progressAmount / uploader.progressTotal * 100) + '%');
});
uploader.on('end', function () {
return done();
});
case 6:
case 'end':
return _context.stop();
}
}
}, _callee, undefined);
}));
return function (_x7, _x8) {
return _ref3.apply(this, arguments);
};
}());
}));
case 3:
case 'end':
return _context2.stop();
}
}
}, _callee2, undefined);
}));
return function (_x6) {
return _ref2.apply(this, arguments);
};
}());
case 11:
case 'end':
return _context3.stop();
}
}
}, _callee3, undefined);
}));
return function (_x, _x2, _x3, _x4, _x5) {
return _ref.apply(this, arguments);
};
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInB1Ymxpc2hlcnMvczMuanMiXSwibmFtZXMiOlsiZCIsInV0aWwiLCJ1cGRhdGUiLCJTMyIsInByb3RvdHlwZSIsImFkZEV4cGVjdDEwMENvbnRpbnVlIiwiYXJ0aWZhY3RzIiwicGFja2FnZUpTT04iLCJmb3JnZUNvbmZpZyIsImF1dGhUb2tlbiIsInRhZyIsInMzQ29uZmlnIiwiczMiLCJzZWNyZXRBY2Nlc3NLZXkiLCJhY2Nlc3NLZXlJZCIsImJ1Y2tldCIsImNsaWVudCIsImNyZWF0ZUNsaWVudCIsInMzQ2xpZW50IiwicHJvY2VzcyIsImVudiIsIkFXU19BQ0NFU1NfS0VZX0lEIiwiQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIiwiZm9sZGVyIiwidmVyc2lvbiIsInVwbG9hZGVkIiwibGVuZ3RoIiwidXBsb2FkU3Bpbm5lciIsInVwZGF0ZVNwaW5uZXIiLCJ0ZXh0IiwiYWxsIiwibWFwIiwicmVzb2x2ZSIsInJlamVjdCIsImRvbmUiLCJlcnIiLCJ1cGxvYWRlciIsInVwbG9hZEZpbGUiLCJsb2NhbEZpbGUiLCJhcnRpZmFjdFBhdGgiLCJzM1BhcmFtcyIsIkJ1Y2tldCIsIktleSIsImJhc2VuYW1lIiwiQUNMIiwicHVibGljIiwib24iLCJNYXRoIiwicm91bmQiLCJwcm9ncmVzc0Ftb3VudCIsInByb2dyZXNzVG90YWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUVBOzs7Ozs7QUFFQSxJQUFNQSxJQUFJLHFCQUFNLDJCQUFOLENBQVY7O0FBRUEsaUJBQUlDLElBQUosQ0FBU0MsTUFBVCxDQUFnQixpQkFBSUMsRUFBSixDQUFPQyxTQUF2QixFQUFrQztBQUNoQ0Msd0JBQXNCLFNBQVNBLG9CQUFULEdBQWdDO0FBQ3BEO0FBQ0Q7QUFIK0IsQ0FBbEM7OztpRUFNZSxrQkFBT0MsU0FBUCxFQUFrQkMsV0FBbEIsRUFBK0JDLFdBQS9CLEVBQTRDQyxTQUE1QyxFQUF1REMsR0FBdkQ7QUFB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QUE7QUFBQTtBQUFBLEciLCJmaWxlIjoicHVibGlzaGVycy9zMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBV1MgZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgczMgZnJvbSAnczMnO1xuXG5pbXBvcnQgYXN5bmNPcmEgZnJvbSAnLi4vdXRpbC9vcmEtaGFuZGxlcic7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnZWxlY3Ryb24tZm9yZ2U6cHVibGlzaDpzMycpO1xuXG5BV1MudXRpbC51cGRhdGUoQVdTLlMzLnByb3RvdHlwZSwge1xuICBhZGRFeHBlY3QxMDBDb250aW51ZTogZnVuY3Rpb24gYWRkRXhwZWN0MTAwQ29udGludWUoKSB7XG4gICAgLy8gSGFjayBhcm91bmQgbGFyZ2UgdXBsb2FkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5kcmV3cmsvbm9kZS1zMy1jbGllbnQvaXNzdWVzLzc0XG4gIH0sXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKGFydGlmYWN0cywgcGFja2FnZUpTT04sIGZvcmdlQ29uZmlnLCBhdXRoVG9rZW4sIHRhZykgPT4ge1xuICBjb25zdCBzM0NvbmZpZyA9IGZvcmdlQ29uZmlnLnMzO1xuICBzM0NvbmZpZy5zZWNyZXRBY2Nlc3NLZXkgPSBzM0NvbmZpZy5zZWNyZXRBY2Nlc3NLZXkgfHwgYXV0aFRva2VuO1xuICBpZiAoIShzM0NvbmZpZy5hY2Nlc3NLZXlJZCAmJiBzM0NvbmZpZy5zZWNyZXRBY2Nlc3NLZXkgJiYgczNDb25maWcuYnVja2V0KSkge1xuICAgIHRocm93ICdJbiBvcmRlciB0byBwdWJsaXNoIHRvIHMzIHlvdSBtdXN0IHNldCB0aGUgXCJzMy5hY2Nlc3NLZXlJZFwiLCBcInByb2Nlc3MuZW52LkVMRUNUUk9OX0ZPUkdFX1MzX1NFQ1JFVF9BQ0NFU1NfS0VZXCIgYW5kIFwiczMuYnVja2V0XCIgcHJvcGVydGllcyBpbiB5b3VyIGZvcmdlIGNvbmZpZy4gU2VlIHRoZSBkb2NzIGZvciBtb3JlIGluZm8nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIH1cblxuICBkKCdjcmVhdGluZyBzMyBjbGllbnQgd2l0aCBvcHRpb25zOicsIHMzQ29uZmlnKTtcblxuICBjb25zdCBjbGllbnQgPSBzMy5jcmVhdGVDbGllbnQoe1xuICAgIHMzQ2xpZW50OiBuZXcgQVdTLlMzKHtcbiAgICAgIGFjY2Vzc0tleUlkOiBzM0NvbmZpZy5hY2Nlc3NLZXlJZCB8fCBwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCxcbiAgICAgIHNlY3JldEFjY2Vzc0tleTogczNDb25maWcuc2VjcmV0QWNjZXNzS2V5IHx8IHByb2Nlc3MuZW52LkFXU19TRUNSRVRfQUNDRVNTX0tFWSxcbiAgICB9KSxcbiAgfSk7XG4gIGNsaWVudC5zMy5hZGRFeHBlY3QxMDBDb250aW51ZSA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IGZvbGRlciA9IHMzQ29uZmlnLmZvbGRlciB8fCB0YWcgfHwgcGFja2FnZUpTT04udmVyc2lvbjtcblxuICBsZXQgdXBsb2FkZWQgPSAwO1xuICBhd2FpdCBhc3luY09yYShgVXBsb2FkaW5nIEFydGlmYWN0cyAke3VwbG9hZGVkfS8ke2FydGlmYWN0cy5sZW5ndGh9YCwgYXN5bmMgKHVwbG9hZFNwaW5uZXIpID0+IHtcbiAgICBjb25zdCB1cGRhdGVTcGlubmVyID0gKCkgPT4ge1xuICAgICAgdXBsb2FkU3Bpbm5lci50ZXh0ID0gYFVwbG9hZGluZyBBcnRpZmFjdHMgJHt1cGxvYWRlZH0vJHthcnRpZmFjdHMubGVuZ3RofWA7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICB9O1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoYXJ0aWZhY3RzLm1hcChhcnRpZmFjdFBhdGggPT5cbiAgICAgIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgZG9uZSA9IChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgdXBsb2FkZWQgKz0gMTtcbiAgICAgICAgICB1cGRhdGVTcGlubmVyKCk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHVwbG9hZGVyID0gY2xpZW50LnVwbG9hZEZpbGUoe1xuICAgICAgICAgIGxvY2FsRmlsZTogYXJ0aWZhY3RQYXRoLFxuICAgICAgICAgIHMzUGFyYW1zOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHMzQ29uZmlnLmJ1Y2tldCxcbiAgICAgICAgICAgIEtleTogYCR7Zm9sZGVyfS8ke3BhdGguYmFzZW5hbWUoYXJ0aWZhY3RQYXRoKX1gLFxuICAgICAgICAgICAgQUNMOiBzM0NvbmZpZy5wdWJsaWMgPyAncHVibGljLXJlYWQnIDogJ3ByaXZhdGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBkKCd1cGxvYWRpbmc6JywgYXJ0aWZhY3RQYXRoKTtcblxuICAgICAgICB1cGxvYWRlci5vbignZXJyb3InLCBlcnIgPT4gZG9uZShlcnIpKTtcbiAgICAgICAgdXBsb2FkZXIub24oJ3Byb2dyZXNzJywgKCkgPT4ge1xuICAgICAgICAgIGQoYFVwbG9hZCBQcm9ncmVzcyAoJHtwYXRoLmJhc2VuYW1lKGFydGlmYWN0UGF0aCl9KSAke01hdGgucm91bmQoKHVwbG9hZGVyLnByb2dyZXNzQW1vdW50IC8gdXBsb2FkZXIucHJvZ3Jlc3NUb3RhbCkgKiAxMDApfSVgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHVwbG9hZGVyLm9uKCdlbmQnLCAoKSA9PiBkb25lKCkpO1xuICAgICAgfSlcbiAgICApKTtcbiAgfSk7XG59O1xuIl19