UNPKG

4.11 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.getCiTag = exports.HttpPublisher = exports.Publisher = exports.ProgressCallback = void 0;
4const builder_util_1 = require("builder-util");
5const builder_util_runtime_1 = require("builder-util-runtime");
6const log_1 = require("builder-util/out/log");
7const chalk = require("chalk");
8const fs_extra_1 = require("fs-extra");
9const path_1 = require("path");
10var progress_1 = require("./progress");
11Object.defineProperty(exports, "ProgressCallback", { enumerable: true, get: function () { return progress_1.ProgressCallback; } });
12const progressBarOptions = {
13 incomplete: " ",
14 width: 20,
15};
16class Publisher {
17 constructor(context) {
18 this.context = context;
19 }
20 createProgressBar(fileName, size) {
21 builder_util_1.log.info({ file: fileName, provider: this.providerName }, "uploading");
22 if (this.context.progress == null || size < 512 * 1024) {
23 return null;
24 }
25 return this.context.progress.createBar(`${" ".repeat(log_1.PADDING + 2)}[:bar] :percent :etas | ${chalk.green(fileName)} to ${this.providerName}`, {
26 total: size,
27 ...progressBarOptions,
28 });
29 }
30 createReadStreamAndProgressBar(file, fileStat, progressBar, reject) {
31 const fileInputStream = (0, fs_extra_1.createReadStream)(file);
32 fileInputStream.on("error", reject);
33 if (progressBar == null) {
34 return fileInputStream;
35 }
36 else {
37 const progressStream = new builder_util_runtime_1.ProgressCallbackTransform(fileStat.size, this.context.cancellationToken, it => progressBar.tick(it.delta));
38 progressStream.on("error", reject);
39 return fileInputStream.pipe(progressStream);
40 }
41 }
42}
43exports.Publisher = Publisher;
44class HttpPublisher extends Publisher {
45 constructor(context, useSafeArtifactName = false) {
46 super(context);
47 this.context = context;
48 this.useSafeArtifactName = useSafeArtifactName;
49 }
50 async upload(task) {
51 const fileName = (this.useSafeArtifactName ? task.safeArtifactName : null) || (0, path_1.basename)(task.file);
52 if (task.fileContent != null) {
53 await this.doUpload(fileName, task.arch || builder_util_1.Arch.x64, task.fileContent.length, (request, reject) => {
54 if (task.timeout) {
55 request.setTimeout(task.timeout, () => {
56 request.destroy();
57 reject(new Error("Request timed out"));
58 });
59 }
60 return request.end(task.fileContent);
61 }, task.file);
62 return;
63 }
64 const fileStat = await (0, fs_extra_1.stat)(task.file);
65 const progressBar = this.createProgressBar(fileName, fileStat.size);
66 return this.doUpload(fileName, task.arch || builder_util_1.Arch.x64, fileStat.size, (request, reject) => {
67 if (progressBar != null) {
68 // reset (because can be called several times (several attempts)
69 progressBar.update(0);
70 }
71 if (task.timeout) {
72 request.setTimeout(task.timeout, () => {
73 request.destroy();
74 reject(new Error("Request timed out"));
75 });
76 }
77 return this.createReadStreamAndProgressBar(task.file, fileStat, progressBar, reject).pipe(request);
78 }, task.file);
79 }
80}
81exports.HttpPublisher = HttpPublisher;
82function getCiTag() {
83 const tag = process.env.TRAVIS_TAG ||
84 process.env.APPVEYOR_REPO_TAG_NAME ||
85 process.env.CIRCLE_TAG ||
86 process.env.BITRISE_GIT_TAG ||
87 process.env.CI_BUILD_TAG || // deprecated, GitLab uses `CI_COMMIT_TAG` instead
88 process.env.CI_COMMIT_TAG ||
89 process.env.BITBUCKET_TAG ||
90 (process.env.GITHUB_REF_TYPE === "tag" ? process.env.GITHUB_REF_NAME : null);
91 return tag != null && tag.length > 0 ? tag : null;
92}
93exports.getCiTag = getCiTag;
94//# sourceMappingURL=publisher.js.map
\No newline at end of file