UNPKG

electron-forge

Version:

A complete tool for building modern Electron applications

182 lines (149 loc) 13.4 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _bluebird = require('bluebird'); var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto); var _fsExtra = require('fs-extra'); var _fsExtra2 = _interopRequireDefault(_fsExtra); var _path = require('path'); var _path2 = _interopRequireDefault(_path); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const EXTENSION = '.forge.publish'; class PublishState { static loadFromDirectory(directory, rootDir) { return (0, _bluebird.coroutine)(function* () { if (!(yield _fsExtra2.default.exists(directory))) { throw new Error(`Attempted to load publish state from a missing directory: ${directory}`); } const publishes = []; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)((yield _fsExtra2.default.readdir(directory))), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { const dirName = _step.value; const subDir = _path2.default.resolve(directory, dirName); const states = []; if ((yield _fsExtra2.default.stat(subDir)).isDirectory()) { const filePaths = (yield _fsExtra2.default.readdir(subDir)).filter(function (fileName) { return fileName.endsWith(EXTENSION); }).map(function (fileName) { return _path2.default.resolve(subDir, fileName); }); var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = (0, _getIterator3.default)(filePaths), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { const filePath = _step2.value; const state = new PublishState(filePath); yield state.load(); state.state.artifacts = state.state.artifacts.map(function (artifactPath) { return _path2.default.resolve(rootDir, artifactPath); }); states.push(state); } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } } publishes.push(states); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return publishes; })(); } static saveToDirectory(directory, artifacts, rootDir) { return (0, _bluebird.coroutine)(function* () { const id = _crypto2.default.createHash('SHA256').update((0, _stringify2.default)(artifacts)).digest('hex'); var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = (0, _getIterator3.default)(artifacts), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { const artifact = _step3.value; artifact.artifacts = artifact.artifacts.map(function (artifactPath) { return _path2.default.relative(rootDir, artifactPath); }); const state = new PublishState(_path2.default.resolve(directory, id, 'null'), '', false); state.setState(artifact); yield state.saveToDisk(); } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } })(); } constructor(filePath, hasHash = true) { this.dir = _path2.default.dirname(filePath); this.path = filePath; this.hasHash = hasHash; } generateHash() { const content = (0, _stringify2.default)(this.state || {}); return _crypto2.default.createHash('SHA256').update(content).digest('hex'); } setState(state) { this.state = state; } load() { var _this = this; return (0, _bluebird.coroutine)(function* () { _this.state = yield _fsExtra2.default.readJson(_this.path); })(); } saveToDisk() { var _this2 = this; return (0, _bluebird.coroutine)(function* () { if (!_this2.hasHash) { _this2.path = _path2.default.resolve(_this2.dir, `${_this2.generateHash()}${EXTENSION}`); _this2.hasHash = true; } yield _fsExtra2.default.mkdirs(_path2.default.dirname(_this2.path)); yield _fsExtra2.default.writeJson(_this2.path, _this2.state); })(); } } exports.default = PublishState; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWwvcHVibGlzaC1zdGF0ZS5qcyJdLCJuYW1lcyI6WyJFWFRFTlNJT04iLCJQdWJsaXNoU3RhdGUiLCJsb2FkRnJvbURpcmVjdG9yeSIsImRpcmVjdG9yeSIsInJvb3REaXIiLCJmcyIsImV4aXN0cyIsIkVycm9yIiwicHVibGlzaGVzIiwicmVhZGRpciIsImRpck5hbWUiLCJzdWJEaXIiLCJwYXRoIiwicmVzb2x2ZSIsInN0YXRlcyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImZpbGVQYXRocyIsImZpbHRlciIsImZpbGVOYW1lIiwiZW5kc1dpdGgiLCJtYXAiLCJmaWxlUGF0aCIsInN0YXRlIiwibG9hZCIsImFydGlmYWN0cyIsImFydGlmYWN0UGF0aCIsInB1c2giLCJzYXZlVG9EaXJlY3RvcnkiLCJpZCIsImNyeXB0byIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJhcnRpZmFjdCIsInJlbGF0aXZlIiwic2V0U3RhdGUiLCJzYXZlVG9EaXNrIiwiY29uc3RydWN0b3IiLCJoYXNIYXNoIiwiZGlyIiwiZGlybmFtZSIsImdlbmVyYXRlSGFzaCIsImNvbnRlbnQiLCJyZWFkSnNvbiIsIm1rZGlycyIsIndyaXRlSnNvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsTUFBTUEsWUFBWSxnQkFBbEI7O0FBRWUsTUFBTUMsWUFBTixDQUFtQjtBQUNoQyxTQUFhQyxpQkFBYixDQUErQkMsU0FBL0IsRUFBMENDLE9BQTFDLEVBQW1EO0FBQUE7QUFDakQsVUFBSSxFQUFDLE1BQU1DLGtCQUFHQyxNQUFILENBQVVILFNBQVYsQ0FBUCxDQUFKLEVBQWlDO0FBQy9CLGNBQU0sSUFBSUksS0FBSixDQUFXLDZEQUE0REosU0FBVSxFQUFqRixDQUFOO0FBQ0Q7O0FBRUQsWUFBTUssWUFBWSxFQUFsQjtBQUxpRDtBQUFBO0FBQUE7O0FBQUE7QUFNakQseURBQXNCLE1BQU1ILGtCQUFHSSxPQUFI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QUFMLElBQWMsRUFBN0IsQ0FBaEI7QUFDQSxXQUFPTyxpQkFBT0MsVUFBUCxDQUFrQixRQUFsQixFQUE0QkMsTUFBNUIsQ0FBbUNXLE9BQW5DLEVBQTRDVixNQUE1QyxDQUFtRCxLQUFuRCxDQUFQO0FBQ0Q7O0FBRURHLFdBQVNiLEtBQVQsRUFBZ0I7QUFDZCxTQUFLQSxLQUFMLEdBQWFBLEtBQWI7QUFDRDs7QUFFS0MsTUFBTixHQUFhO0FBQUE7O0FBQUE7QUFDWCxZQUFLRCxLQUFMLEdBQWEsTUFBTWxCLGtCQUFHdUMsUUFBSCxDQUFZLE1BQUtoQyxJQUFqQixDQUFuQjtBQURXO0FBRVo7O0FBRUt5QixZQUFOLEdBQW1CO0FBQUE7O0FBQUE7QUFDakIsVUFBSSxDQUFDLE9BQUtFLE9BQVYsRUFBbUI7QUFDakIsZUFBSzNCLElBQUwsR0FBWUEsZUFBS0MsT0FBTCxDQUFhLE9BQUsyQixHQUFsQixFQUF3QixHQUFFLE9BQUtFLFlBQUwsRUFBb0IsR0FBRTFDLFNBQVUsRUFBMUQsQ0FBWjtBQUNBLGVBQUt1QyxPQUFMLEdBQWUsSUFBZjtBQUNEOztBQUVELFlBQU1sQyxrQkFBR3dDLE1BQUgsQ0FBVWpDLGVBQUs2QixPQUFMLENBQWEsT0FBSzdCLElBQWxCLENBQVYsQ0FBTjtBQUNBLFlBQU1QLGtCQUFHeUMsU0FBSCxDQUFhLE9BQUtsQyxJQUFsQixFQUF3QixPQUFLVyxLQUE3QixDQUFOO0FBUGlCO0FBUWxCO0FBaEUrQjtrQkFBYnRCLFkiLCJmaWxlIjoidXRpbC9wdWJsaXNoLXN0YXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBFWFRFTlNJT04gPSAnLmZvcmdlLnB1Ymxpc2gnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoU3RhdGUge1xuICBzdGF0aWMgYXN5bmMgbG9hZEZyb21EaXJlY3RvcnkoZGlyZWN0b3J5LCByb290RGlyKSB7XG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoZGlyZWN0b3J5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0ZWQgdG8gbG9hZCBwdWJsaXNoIHN0YXRlIGZyb20gYSBtaXNzaW5nIGRpcmVjdG9yeTogJHtkaXJlY3Rvcnl9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHVibGlzaGVzID0gW107XG4gICAgZm9yIChjb25zdCBkaXJOYW1lIG9mIGF3YWl0IGZzLnJlYWRkaXIoZGlyZWN0b3J5KSkge1xuICAgICAgY29uc3Qgc3ViRGlyID0gcGF0aC5yZXNvbHZlKGRpcmVjdG9yeSwgZGlyTmFtZSk7XG4gICAgICBjb25zdCBzdGF0ZXMgPSBbXTtcbiAgICAgIGlmICgoYXdhaXQgZnMuc3RhdChzdWJEaXIpKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRocyA9IChhd2FpdCBmcy5yZWFkZGlyKHN1YkRpcikpXG4gICAgICAgICAgLmZpbHRlcihmaWxlTmFtZSA9PiBmaWxlTmFtZS5lbmRzV2l0aChFWFRFTlNJT04pKVxuICAgICAgICAgIC5tYXAoZmlsZU5hbWUgPT4gcGF0aC5yZXNvbHZlKHN1YkRpciwgZmlsZU5hbWUpKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIGZpbGVQYXRocykge1xuICAgICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IFB1Ymxpc2hTdGF0ZShmaWxlUGF0aCk7XG4gICAgICAgICAgYXdhaXQgc3RhdGUubG9hZCgpO1xuICAgICAgICAgIHN0YXRlLnN0YXRlLmFydGlmYWN0cyA9IHN0YXRlLnN0YXRlLmFydGlmYWN0cy5tYXAoYXJ0aWZhY3RQYXRoID0+IHBhdGgucmVzb2x2ZShyb290RGlyLCBhcnRpZmFjdFBhdGgpKTtcbiAgICAgICAgICBzdGF0ZXMucHVzaChzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHB1Ymxpc2hlcy5wdXNoKHN0YXRlcyk7XG4gICAgfVxuICAgIHJldHVybiBwdWJsaXNoZXM7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgc2F2ZVRvRGlyZWN0b3J5KGRpcmVjdG9yeSwgYXJ0aWZhY3RzLCByb290RGlyKSB7XG4gICAgY29uc3QgaWQgPSBjcnlwdG8uY3JlYXRlSGFzaCgnU0hBMjU2JykudXBkYXRlKEpTT04uc3RyaW5naWZ5KGFydGlmYWN0cykpLmRpZ2VzdCgnaGV4Jyk7XG4gICAgZm9yIChjb25zdCBhcnRpZmFjdCBvZiBhcnRpZmFjdHMpIHtcbiAgICAgIGFydGlmYWN0LmFydGlmYWN0cyA9IGFydGlmYWN0LmFydGlmYWN0cy5tYXAoYXJ0aWZhY3RQYXRoID0+IHBhdGgucmVsYXRpdmUocm9vdERpciwgYXJ0aWZhY3RQYXRoKSk7XG4gICAgICBjb25zdCBzdGF0ZSA9IG5ldyBQdWJsaXNoU3RhdGUocGF0aC5yZXNvbHZlKGRpcmVjdG9yeSwgaWQsICdudWxsJyksICcnLCBmYWxzZSk7XG4gICAgICBzdGF0ZS5zZXRTdGF0ZShhcnRpZmFjdCk7XG4gICAgICBhd2FpdCBzdGF0ZS5zYXZlVG9EaXNrKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoZmlsZVBhdGgsIGhhc0hhc2ggPSB0cnVlKSB7XG4gICAgdGhpcy5kaXIgPSBwYXRoLmRpcm5hbWUoZmlsZVBhdGgpO1xuICAgIHRoaXMucGF0aCA9IGZpbGVQYXRoO1xuICAgIHRoaXMuaGFzSGFzaCA9IGhhc0hhc2g7XG4gIH1cblxuICBnZW5lcmF0ZUhhc2goKSB7XG4gICAgY29uc3QgY29udGVudCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUgfHwge30pO1xuICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnU0hBMjU2JykudXBkYXRlKGNvbnRlbnQpLmRpZ2VzdCgnaGV4Jyk7XG4gIH1cblxuICBzZXRTdGF0ZShzdGF0ZSkge1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5zdGF0ZSA9IGF3YWl0IGZzLnJlYWRKc29uKHRoaXMucGF0aCk7XG4gIH1cblxuICBhc3luYyBzYXZlVG9EaXNrKCkge1xuICAgIGlmICghdGhpcy5oYXNIYXNoKSB7XG4gICAgICB0aGlzLnBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5kaXIsIGAke3RoaXMuZ2VuZXJhdGVIYXNoKCl9JHtFWFRFTlNJT059YCk7XG4gICAgICB0aGlzLmhhc0hhc2ggPSB0cnVlO1xuICAgIH1cblxuICAgIGF3YWl0IGZzLm1rZGlycyhwYXRoLmRpcm5hbWUodGhpcy5wYXRoKSk7XG4gICAgYXdhaXQgZnMud3JpdGVKc29uKHRoaXMucGF0aCwgdGhpcy5zdGF0ZSk7XG4gIH1cbn1cbiJdfQ==