thedesk/app/node_modules/app-builder-lib/out/publish/BintrayPublisher.js
2019-09-12 23:38:13 +09:00

182 lines
4.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BintrayPublisher = void 0;
function _builderUtil() {
const data = require("builder-util");
_builderUtil = function () {
return data;
};
return data;
}
function _builderUtilRuntime() {
const data = require("builder-util-runtime");
_builderUtilRuntime = function () {
return data;
};
return data;
}
function _bintray() {
const data = require("builder-util-runtime/out/bintray");
_bintray = function () {
return data;
};
return data;
}
function _nodeHttpExecutor() {
const data = require("builder-util/out/nodeHttpExecutor");
_nodeHttpExecutor = function () {
return data;
};
return data;
}
function _lazyVal() {
const data = require("lazy-val");
_lazyVal = function () {
return data;
};
return data;
}
function _electronPublish() {
const data = require("electron-publish");
_electronPublish = function () {
return data;
};
return data;
}
class BintrayPublisher extends _electronPublish().HttpPublisher {
constructor(context, info, version, options = {}) {
super(context);
this.version = version;
this.options = options;
this._versionPromise = new (_lazyVal().Lazy)(() => this.init());
this.providerName = "Bintray";
let token = info.token;
if ((0, _builderUtil().isEmptyOrSpaces)(token)) {
token = process.env.BT_TOKEN;
if ((0, _builderUtil().isEmptyOrSpaces)(token)) {
throw new (_builderUtil().InvalidConfigurationError)(`Bintray token is not set, neither programmatically, nor using env "BT_TOKEN" (see https://www.electron.build/configuration/publish#bintrayoptions)`);
}
token = token.trim();
if (!(0, _builderUtil().isTokenCharValid)(token)) {
throw new (_builderUtil().InvalidConfigurationError)(`Bintray token (${JSON.stringify(token)}) contains invalid characters, please check env "BT_TOKEN"`);
}
}
this.client = new (_bintray().BintrayClient)(info, _nodeHttpExecutor().httpExecutor, this.context.cancellationToken, token);
}
async init() {
try {
return await this.client.getVersion(this.version);
} catch (e) {
if (e instanceof _builderUtilRuntime().HttpError && e.statusCode === 404) {
if (this.options.publish !== "onTagOrDraft") {
_builderUtil().log.info({
version: this.version
}, "version doesn't exist, creating one");
return await this.client.createVersion(this.version);
} else {
_builderUtil().log.warn({
reason: "version doesn't exist",
version: this.version
}, "skipped publishing");
}
}
throw e;
}
}
async doUpload(fileName, arch, dataLength, requestProcessor) {
const version = await this._versionPromise.value;
if (version == null) {
_builderUtil().log.warn({
file: fileName,
reason: "version doesn't exist and is not created",
version: this.version
}, "skipped publishing");
return;
}
const options = {
hostname: "api.bintray.com",
path: `/content/${this.client.owner}/${this.client.repo}/${this.client.packageName}/${encodeURI(`${version.name}/${fileName}`)}`,
method: "PUT",
headers: {
"Content-Length": dataLength,
"X-Bintray-Override": "1",
"X-Bintray-Publish": "1",
"X-Bintray-Debian-Architecture": (0, _builderUtil().toLinuxArchString)(arch, "deb")
}
};
if (this.client.distribution != null) {
options.headers["X-Bintray-Debian-Distribution"] = this.client.distribution;
}
if (this.client.component != null) {
options.headers["X-Bintray-Debian-Component"] = this.client.component;
}
for (let attemptNumber = 0;; attemptNumber++) {
try {
return await _nodeHttpExecutor().httpExecutor.doApiRequest((0, _builderUtilRuntime().configureRequestOptions)(options, this.client.auth), this.context.cancellationToken, requestProcessor);
} catch (e) {
if (attemptNumber < 3 && (e instanceof _builderUtilRuntime().HttpError && e.statusCode === 502 || e.code === "EPIPE")) {
continue;
}
throw e;
}
}
} //noinspection JSUnusedGlobalSymbols
async deleteRelease(isForce = false) {
if (!isForce && !this._versionPromise.hasValue) {
return;
}
const version = await this._versionPromise.value;
if (version != null) {
await this.client.deleteVersion(version.name);
}
}
toString() {
return `Bintray (user: ${this.client.user || this.client.owner}, owner: ${this.client.owner}, package: ${this.client.packageName}, repository: ${this.client.repo}, version: ${this.version})`;
}
} exports.BintrayPublisher = BintrayPublisher;
// __ts-babel@6.0.4
//# sourceMappingURL=BintrayPublisher.js.map