182 lines
4.8 KiB
JavaScript
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
|