grafana/packages/grafana-toolkit/docker/grafana-plugin-ci-alpine/install/bin/githubRelease.js
Zoltán Bedi ae30482465
Chore: MEGA - Make Eslint Great Again 💅 (#26094)
* Fix lint error in types.ts

* Bump eslint and its deps to latest

* Add eslintignore and remove not needed eslintrcs

* Change webpack configs eslint config

* Update package.jsons and removed unused eslintrc files

* Chore yarn lint --fix 💅

* Add devenv to eslintignore

* Remove eslint disable comments for rules that are not used

* Remaining eslint fixes 💅

* Bump grafana/eslint-config 💥

* Modify package.json

No need for duplicate checks.

* Modify eslintignore to ignore data and dist folders

* Revert removing .eslintrc to make sure not to use certain packages

* Modify package.json to remove not needed command

* Use gitignore for ignoring paths
2020-08-11 17:52:44 +02:00

154 lines
5.3 KiB
JavaScript

'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var tslib_1 = require('tslib');
var getPluginId_1 = require('../../config/utils/getPluginId');
var pluginValidation_1 = require('../../config/utils/pluginValidation');
var env_1 = require('../../plugins/env');
var path = require('path');
var fs = require('fs');
// @ts-ignore
// import execa = require('execa');
var githubClient_1 = tslib_1.__importDefault(require('./githubClient'));
var resolveContentType = function(extension) {
if (extension.startsWith('.')) {
extension = extension.substr(1);
}
switch (extension) {
case 'zip':
return 'application/zip';
case 'json':
return 'application/json';
case 'sha1':
return 'text/plain';
default:
return 'application/octet-stream';
}
};
var GitHubRelease = /** @class */ (function() {
function GitHubRelease(token, username, repository, releaseNotes, commitHash) {
this.token = token;
this.username = username;
this.repository = repository;
this.releaseNotes = releaseNotes;
this.commitHash = commitHash;
this.git = new githubClient_1.default({
required: true,
repo: repository,
});
}
GitHubRelease.prototype.publishAssets = function(srcLocation, destUrl) {
var _this = this;
// Add the assets. Loop through files in the ci/dist folder and upload each asset.
var files = fs.readdirSync(srcLocation);
return files.map(function(file) {
return tslib_1.__awaiter(_this, void 0, void 0, function() {
var fileStat, fileData;
return tslib_1.__generator(this, function(_a) {
fileStat = fs.statSync(srcLocation + '/' + file);
fileData = fs.readFileSync(srcLocation + '/' + file);
return [
2 /*return*/,
this.git.client.post(destUrl + '?name=' + file, fileData, {
headers: {
'Content-Type': resolveContentType(path.extname(file)),
'Content-Length': fileStat.size,
},
maxContentLength: fileStat.size * 2 * 1024 * 1024,
}),
];
});
});
});
};
GitHubRelease.prototype.release = function() {
var _a, _b, _c, _d;
return tslib_1.__awaiter(this, void 0, void 0, function() {
var ciDir,
distDir,
distContentDir,
pluginJsonFile,
pluginInfo,
PUBLISH_DIR,
commitHash,
latestRelease,
reason_1,
newReleaseResponse,
publishPromises,
reason_2;
return tslib_1.__generator(this, function(_e) {
switch (_e.label) {
case 0:
ciDir = env_1.getCiFolder();
distDir = path.resolve(ciDir, 'dist');
distContentDir = path.resolve(distDir, getPluginId_1.getPluginId());
pluginJsonFile = path.resolve(distContentDir, 'plugin.json');
pluginInfo = pluginValidation_1.getPluginJson(pluginJsonFile).info;
PUBLISH_DIR = path.resolve(env_1.getCiFolder(), 'packages');
commitHash = this.commitHash || ((_a = pluginInfo.build) === null || _a === void 0 ? void 0 : _a.hash);
_e.label = 1;
case 1:
_e.trys.push([1, 5, , 6]);
return [4 /*yield*/, this.git.client.get('releases/tags/v' + pluginInfo.version)];
case 2:
latestRelease = _e.sent();
if (!(latestRelease.data.tag_name === 'v' + pluginInfo.version)) {
return [3 /*break*/, 4];
}
return [4 /*yield*/, this.git.client.delete('releases/' + latestRelease.data.id)];
case 3:
_e.sent();
_e.label = 4;
case 4:
return [3 /*break*/, 6];
case 5:
reason_1 = _e.sent();
if (reason_1.response.status !== 404) {
// 404 just means no release found. Not an error. Anything else though, re throw the error
throw reason_1;
}
return [3 /*break*/, 6];
case 6:
_e.trys.push([6, 9, , 10]);
return [
4 /*yield*/,
this.git.client.post('releases', {
tag_name: 'v' + pluginInfo.version,
target_commitish: commitHash,
name: 'v' + pluginInfo.version,
body: this.releaseNotes,
draft: false,
prerelease: false,
}),
];
case 7:
newReleaseResponse = _e.sent();
publishPromises = this.publishAssets(
PUBLISH_DIR,
'https://uploads.github.com/repos/' +
this.username +
'/' +
this.repository +
'/releases/' +
newReleaseResponse.data.id +
'/assets'
);
return [4 /*yield*/, Promise.all(publishPromises)];
case 8:
_e.sent();
return [3 /*break*/, 10];
case 9:
reason_2 = _e.sent();
console.log(reason_2);
// Rethrow the error so that we can trigger a non-zero exit code to circle-ci
throw reason_2;
case 10:
return [2 /*return*/];
}
});
});
};
return GitHubRelease;
})();
exports.GitHubRelease = GitHubRelease;
//# sourceMappingURL=githubRelease.js.map7027e10521e9