diff --git a/.gitignore b/.gitignore index bc6dee0..869e494 100644 --- a/.gitignore +++ b/.gitignore @@ -95,4 +95,7 @@ fabric.properties # End of https://www.gitignore.io/api/webstorm # Coverage -coverage \ No newline at end of file +coverage + +# Ignore lib, it contains intermediates +/lib \ No newline at end of file diff --git a/lib/Action.js b/lib/Action.js deleted file mode 100644 index 771dbff..0000000 --- a/lib/Action.js +++ /dev/null @@ -1,133 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Action = void 0; -const core = __importStar(require("@actions/core")); -const GithubError_1 = require("./GithubError"); -const ReleaseValidator_1 = require("./ReleaseValidator"); -class Action { - constructor(inputs, outputs, releases, uploader, artifactDestroyer, skipper) { - this.inputs = inputs; - this.outputs = outputs; - this.releases = releases; - this.uploader = uploader; - this.artifactDestroyer = artifactDestroyer; - this.skipper = skipper; - this.releaseValidator = new ReleaseValidator_1.ReleaseValidator(inputs.updateOnlyUnreleased); - } - perform() { - return __awaiter(this, void 0, void 0, function* () { - if (yield this.skipper.shouldSkip()) { - core.notice("Skipping action, release already exists and skipIfReleaseExists is enabled."); - return; - } - const releaseResponse = yield this.createOrUpdateRelease(); - const releaseData = releaseResponse.data; - const releaseId = releaseData.id; - const uploadUrl = releaseData.upload_url; - if (this.inputs.removeArtifacts) { - yield this.artifactDestroyer.destroyArtifacts(releaseId); - } - const artifacts = this.inputs.artifacts; - if (artifacts.length > 0) { - yield this.uploader.uploadArtifacts(artifacts, releaseId, uploadUrl); - } - this.outputs.applyReleaseData(releaseData); - }); - } - createOrUpdateRelease() { - return __awaiter(this, void 0, void 0, function* () { - if (this.inputs.allowUpdates) { - let getResponse; - try { - getResponse = yield this.releases.getByTag(this.inputs.tag); - } - catch (error) { - return yield this.checkForMissingReleaseError(error); - } - // Fail if this isn't an unreleased release & updateOnlyUnreleased is enabled. - this.releaseValidator.validateReleaseUpdate(getResponse.data); - return yield this.updateRelease(getResponse.data.id); - } - else { - return yield this.createRelease(); - } - }); - } - checkForMissingReleaseError(error) { - return __awaiter(this, void 0, void 0, function* () { - if (Action.noPublishedRelease(error)) { - return yield this.updateDraftOrCreateRelease(); - } - else { - throw error; - } - }); - } - updateRelease(id) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.releases.update(id, this.inputs.tag, this.inputs.updatedReleaseBody, this.inputs.commit, this.inputs.discussionCategory, this.inputs.updatedDraft, this.inputs.makeLatest, this.inputs.updatedReleaseName, this.inputs.updatedPrerelease); - }); - } - static noPublishedRelease(error) { - const githubError = new GithubError_1.GithubError(error); - return githubError.status == 404; - } - updateDraftOrCreateRelease() { - return __awaiter(this, void 0, void 0, function* () { - const draftReleaseId = yield this.findMatchingDraftReleaseId(); - if (draftReleaseId) { - return yield this.updateRelease(draftReleaseId); - } - else { - return yield this.createRelease(); - } - }); - } - findMatchingDraftReleaseId() { - return __awaiter(this, void 0, void 0, function* () { - const tag = this.inputs.tag; - const response = yield this.releases.listReleases(); - const releases = response.data; - const draftRelease = releases.find(release => release.draft && release.tag_name == tag); - return draftRelease === null || draftRelease === void 0 ? void 0 : draftRelease.id; - }); - } - createRelease() { - return __awaiter(this, void 0, void 0, function* () { - return yield this.releases.create(this.inputs.tag, this.inputs.createdReleaseBody, this.inputs.commit, this.inputs.discussionCategory, this.inputs.createdDraft, this.inputs.generateReleaseNotes, this.inputs.makeLatest, this.inputs.createdReleaseName, this.inputs.createdPrerelease); - }); - } -} -exports.Action = Action; diff --git a/lib/ActionSkipper.js b/lib/ActionSkipper.js deleted file mode 100644 index fdf8a93..0000000 --- a/lib/ActionSkipper.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ReleaseActionSkipper = void 0; -class ReleaseActionSkipper { - constructor(skipIfReleaseExists, releases, tag) { - this.skipIfReleaseExists = skipIfReleaseExists; - this.releases = releases; - this.tag = tag; - } - shouldSkip() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.skipIfReleaseExists) { - // Bail if skip flag isn't set. - return false; - } - try { - const getResponse = yield this.releases.getByTag(this.tag); - return getResponse.data != null; - } - catch (error) { - // There is either no release or something else went wrong. Either way, run the action. - return false; - } - }); - } -} -exports.ReleaseActionSkipper = ReleaseActionSkipper; diff --git a/lib/Artifact.js b/lib/Artifact.js deleted file mode 100644 index 61c429d..0000000 --- a/lib/Artifact.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Artifact = void 0; -const path_1 = require("path"); -const fs_1 = require("fs"); -class Artifact { - constructor(path, contentType = "raw") { - this.path = path; - this.name = (0, path_1.basename)(path); - this.contentType = contentType; - } - get contentLength() { - return (0, fs_1.statSync)(this.path).size; - } - readFile() { - return (0, fs_1.readFileSync)(this.path); - } -} -exports.Artifact = Artifact; diff --git a/lib/ArtifactDestroyer.js b/lib/ArtifactDestroyer.js deleted file mode 100644 index adbbe7b..0000000 --- a/lib/ArtifactDestroyer.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GithubArtifactDestroyer = void 0; -const core = __importStar(require("@actions/core")); -class GithubArtifactDestroyer { - constructor(releases) { - this.releases = releases; - } - destroyArtifacts(releaseId) { - return __awaiter(this, void 0, void 0, function* () { - const releaseAssets = yield this.releases.listArtifactsForRelease(releaseId); - for (const artifact of releaseAssets) { - const asset = artifact; - core.debug(`Deleting existing artifact ${artifact.name}...`); - yield this.releases.deleteArtifact(asset.id); - } - }); - } -} -exports.GithubArtifactDestroyer = GithubArtifactDestroyer; diff --git a/lib/ArtifactGlobber.js b/lib/ArtifactGlobber.js deleted file mode 100644 index 1650b3f..0000000 --- a/lib/ArtifactGlobber.js +++ /dev/null @@ -1,77 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FileArtifactGlobber = void 0; -const core = __importStar(require("@actions/core")); -const Globber_1 = require("./Globber"); -const Artifact_1 = require("./Artifact"); -const untildify_1 = __importDefault(require("untildify")); -const ArtifactPathValidator_1 = require("./ArtifactPathValidator"); -const PathNormalizer_1 = require("./PathNormalizer"); -class FileArtifactGlobber { - constructor(globber = new Globber_1.FileGlobber()) { - this.globber = globber; - } - globArtifactString(artifact, contentType, errorsFailBuild) { - const split = /[,\n]/; - return artifact.split(split) - .map(path => path.trimStart()) - .map(path => PathNormalizer_1.PathNormalizer.normalizePath(path)) - .map(path => FileArtifactGlobber.expandPath(path)) - .map(pattern => this.globPattern(pattern, errorsFailBuild)) - .map((globResult) => FileArtifactGlobber.validatePattern(errorsFailBuild, globResult[1], globResult[0])) - .reduce((accumulated, current) => accumulated.concat(current)) - .map(path => new Artifact_1.Artifact(path, contentType)); - } - globPattern(pattern, errorsFailBuild) { - const paths = this.globber.glob(pattern); - if (paths.length == 0) { - if (errorsFailBuild) { - FileArtifactGlobber.throwGlobError(pattern); - } - else { - FileArtifactGlobber.reportGlobWarning(pattern); - } - } - return [pattern, paths]; - } - static validatePattern(errorsFailBuild, paths, pattern) { - const validator = new ArtifactPathValidator_1.ArtifactPathValidator(errorsFailBuild, paths, pattern); - return validator.validate(); - } - static reportGlobWarning(pattern) { - core.warning(`Artifact pattern :${pattern} did not match any files`); - } - static throwGlobError(pattern) { - throw Error(`Artifact pattern :${pattern} did not match any files`); - } - static expandPath(path) { - return (0, untildify_1.default)(path); - } -} -exports.FileArtifactGlobber = FileArtifactGlobber; diff --git a/lib/ArtifactPathValidator.js b/lib/ArtifactPathValidator.js deleted file mode 100644 index 8e820d8..0000000 --- a/lib/ArtifactPathValidator.js +++ /dev/null @@ -1,62 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ArtifactPathValidator = void 0; -const core = __importStar(require("@actions/core")); -const fs_1 = require("fs"); -class ArtifactPathValidator { - constructor(errorsFailBuild, paths, pattern) { - this.paths = paths; - this.pattern = pattern; - this.errorsFailBuild = errorsFailBuild; - } - validate() { - this.verifyPathsNotEmpty(); - return this.paths.filter((path) => this.verifyNotDirectory(path)); - } - verifyPathsNotEmpty() { - if (this.paths.length == 0) { - const message = `Artifact pattern:${this.pattern} did not match any files`; - this.reportError(message); - } - } - verifyNotDirectory(path) { - const isDir = (0, fs_1.statSync)(path).isDirectory(); - if (isDir) { - const message = `Artifact is a directory:${path}. Directories can not be uploaded to a release.`; - this.reportError(message); - } - return !isDir; - } - reportError(message) { - if (this.errorsFailBuild) { - throw Error(message); - } - else { - core.warning(message); - } - } -} -exports.ArtifactPathValidator = ArtifactPathValidator; diff --git a/lib/ArtifactUploader.js b/lib/ArtifactUploader.js deleted file mode 100644 index e4bec95..0000000 --- a/lib/ArtifactUploader.js +++ /dev/null @@ -1,92 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GithubArtifactUploader = void 0; -const core = __importStar(require("@actions/core")); -class GithubArtifactUploader { - constructor(releases, replacesExistingArtifacts = true, throwsUploadErrors = false) { - this.releases = releases; - this.replacesExistingArtifacts = replacesExistingArtifacts; - this.throwsUploadErrors = throwsUploadErrors; - } - uploadArtifacts(artifacts, releaseId, uploadUrl) { - return __awaiter(this, void 0, void 0, function* () { - if (this.replacesExistingArtifacts) { - yield this.deleteUpdatedArtifacts(artifacts, releaseId); - } - for (const artifact of artifacts) { - yield this.uploadArtifact(artifact, releaseId, uploadUrl); - } - }); - } - uploadArtifact(artifact, releaseId, uploadUrl, retry = 3) { - return __awaiter(this, void 0, void 0, function* () { - try { - core.debug(`Uploading artifact ${artifact.name}...`); - yield this.releases.uploadArtifact(uploadUrl, artifact.contentLength, artifact.contentType, artifact.readFile(), artifact.name, releaseId); - } - catch (error) { - if (error.status >= 500 && retry > 0) { - core.warning(`Failed to upload artifact ${artifact.name}. ${error.message}. Retrying...`); - yield this.uploadArtifact(artifact, releaseId, uploadUrl, retry - 1); - } - else { - if (this.throwsUploadErrors) { - throw Error(`Failed to upload artifact ${artifact.name}. ${error.message}.`); - } - else { - core.warning(`Failed to upload artifact ${artifact.name}. ${error.message}.`); - } - } - } - }); - } - deleteUpdatedArtifacts(artifacts, releaseId) { - return __awaiter(this, void 0, void 0, function* () { - const releaseAssets = yield this.releases.listArtifactsForRelease(releaseId); - const assetByName = {}; - releaseAssets.forEach(asset => { - assetByName[asset.name] = asset; - }); - for (const artifact of artifacts) { - const asset = assetByName[artifact.name]; - if (asset) { - core.debug(`Deleting existing artifact ${artifact.name}...`); - yield this.releases.deleteArtifact(asset.id); - } - } - }); - } -} -exports.GithubArtifactUploader = GithubArtifactUploader; diff --git a/lib/GithubError.js b/lib/GithubError.js deleted file mode 100644 index e57647c..0000000 --- a/lib/GithubError.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GithubError = void 0; -const GithubErrorDetail_1 = require("./GithubErrorDetail"); -class GithubError { - constructor(error) { - this.error = error; - this.githubErrors = this.generateGithubErrors(); - } - generateGithubErrors() { - const errors = this.error.errors; - if (errors instanceof Array) { - return errors.map((err) => new GithubErrorDetail_1.GithubErrorDetail(err)); - } - else { - return []; - } - } - get status() { - return this.error.status; - } - hasErrorWithCode(code) { - return this.githubErrors.some((err) => err.code == code); - } - toString() { - const message = this.error.message; - const errors = this.githubErrors; - const status = this.status; - if (errors.length > 0) { - return `Error ${status}: ${message}\nErrors:\n${this.errorBulletedList(errors)}${this.remediation()}`; - } - else { - return `Error ${status}: ${message}${this.remediation()}`; - } - } - errorBulletedList(errors) { - return errors.map((err) => `- ${err}`).join("\n"); - } - remediation() { - if (this.status == 404) { - return "\nMake sure your github token has access to the repo and has permission to author releases"; - } - return ""; - } -} -exports.GithubError = GithubError; diff --git a/lib/GithubErrorDetail.js b/lib/GithubErrorDetail.js deleted file mode 100644 index ccff073..0000000 --- a/lib/GithubErrorDetail.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GithubErrorDetail = void 0; -class GithubErrorDetail { - constructor(error) { - this.error = error; - } - get code() { - return this.error.code; - } - toString() { - const code = this.error.code; - switch (code) { - case 'missing': - return this.missingResourceMessage(); - case 'missing_field': - return this.missingFieldMessage(); - case 'invalid': - return this.invalidFieldMessage(); - case 'already_exists': - return this.resourceAlreadyExists(); - default: - return this.customErrorMessage(); - } - } - customErrorMessage() { - const message = this.error.message; - const documentation = this.error.documentation_url; - let documentationMessage; - if (documentation) { - documentationMessage = `\nPlease see ${documentation}.`; - } - else { - documentationMessage = ""; - } - return `${message}${documentationMessage}`; - } - invalidFieldMessage() { - const resource = this.error.resource; - const field = this.error.field; - return `The ${field} field on ${resource} is an invalid format.`; - } - missingResourceMessage() { - const resource = this.error.resource; - return `${resource} does not exist.`; - } - missingFieldMessage() { - const resource = this.error.resource; - const field = this.error.field; - return `The ${field} field on ${resource} is missing.`; - } - resourceAlreadyExists() { - const resource = this.error.resource; - return `${resource} already exists.`; - } -} -exports.GithubErrorDetail = GithubErrorDetail; diff --git a/lib/Globber.js b/lib/Globber.js deleted file mode 100644 index f8451f9..0000000 --- a/lib/Globber.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FileGlobber = void 0; -const glob_1 = require("glob"); -class FileGlobber { - glob(pattern) { - return (0, glob_1.globSync)(pattern, { mark: true }); - } -} -exports.FileGlobber = FileGlobber; diff --git a/lib/Inputs.js b/lib/Inputs.js deleted file mode 100644 index 75ddf4d..0000000 --- a/lib/Inputs.js +++ /dev/null @@ -1,199 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CoreInputs = void 0; -const core = __importStar(require("@actions/core")); -const fs_1 = require("fs"); -class CoreInputs { - constructor(artifactGlobber, context) { - this.artifactGlobber = artifactGlobber; - this.context = context; - } - get allowUpdates() { - const allow = core.getInput('allowUpdates'); - return allow == 'true'; - } - get artifacts() { - let artifacts = core.getInput('artifacts'); - if (!artifacts) { - artifacts = core.getInput('artifact'); - } - if (artifacts) { - let contentType = core.getInput('artifactContentType'); - if (!contentType) { - contentType = 'raw'; - } - return this.artifactGlobber - .globArtifactString(artifacts, contentType, this.artifactErrorsFailBuild); - } - return []; - } - get artifactErrorsFailBuild() { - const allow = core.getInput('artifactErrorsFailBuild'); - return allow == 'true'; - } - get body() { - const body = core.getInput('body'); - if (body) { - return body; - } - const bodyFile = core.getInput('bodyFile'); - if (bodyFile) { - return this.stringFromFile(bodyFile); - } - return ''; - } - get createdDraft() { - const draft = core.getInput('draft'); - return draft == 'true'; - } - get createdPrerelease() { - const preRelease = core.getInput('prerelease'); - return preRelease == 'true'; - } - get createdReleaseBody() { - if (CoreInputs.omitBody) - return undefined; - return this.body; - } - static get omitBody() { - return core.getInput('omitBody') == 'true'; - } - get createdReleaseName() { - if (CoreInputs.omitName) - return undefined; - return this.name; - } - static get omitName() { - return core.getInput('omitName') == 'true'; - } - get commit() { - const commit = core.getInput('commit'); - if (commit) { - return commit; - } - return undefined; - } - get discussionCategory() { - const category = core.getInput('discussionCategory'); - if (category) { - return category; - } - return undefined; - } - get name() { - const name = core.getInput('name'); - if (name) { - return name; - } - return this.tag; - } - get generateReleaseNotes() { - const generate = core.getInput('generateReleaseNotes'); - return generate == 'true'; - } - get makeLatest() { - return core.getInput('makeLatest'); - } - get owner() { - let owner = core.getInput('owner'); - if (owner) { - return owner; - } - return this.context.repo.owner; - } - get removeArtifacts() { - const removes = core.getInput('removeArtifacts'); - return removes == 'true'; - } - get replacesArtifacts() { - const replaces = core.getInput('replacesArtifacts'); - return replaces == 'true'; - } - get repo() { - let repo = core.getInput('repo'); - if (repo) { - return repo; - } - return this.context.repo.repo; - } - get skipIfReleaseExists() { - return core.getBooleanInput("skipIfReleaseExists"); - } - get tag() { - const tag = core.getInput('tag'); - if (tag) { - return tag; - } - const ref = this.context.ref; - const tagPath = "refs/tags/"; - if (ref && ref.startsWith(tagPath)) { - return ref.substr(tagPath.length, ref.length); - } - throw Error("No tag found in ref or input!"); - } - get token() { - return core.getInput('token', { required: true }); - } - get updatedDraft() { - if (CoreInputs.omitDraftDuringUpdate) - return undefined; - return this.createdDraft; - } - static get omitDraftDuringUpdate() { - return core.getInput('omitDraftDuringUpdate') == 'true'; - } - get updatedPrerelease() { - if (CoreInputs.omitPrereleaseDuringUpdate) - return undefined; - return this.createdPrerelease; - } - static get omitPrereleaseDuringUpdate() { - return core.getInput('omitPrereleaseDuringUpdate') == 'true'; - } - get updatedReleaseBody() { - if (CoreInputs.omitBody || CoreInputs.omitBodyDuringUpdate) - return undefined; - return this.body; - } - static get omitBodyDuringUpdate() { - return core.getInput('omitBodyDuringUpdate') == 'true'; - } - get updatedReleaseName() { - if (CoreInputs.omitName || CoreInputs.omitNameDuringUpdate) - return undefined; - return this.name; - } - get updateOnlyUnreleased() { - return core.getInput('updateOnlyUnreleased') == 'true'; - } - static get omitNameDuringUpdate() { - return core.getInput('omitNameDuringUpdate') == 'true'; - } - stringFromFile(path) { - return (0, fs_1.readFileSync)(path, 'utf-8'); - } -} -exports.CoreInputs = CoreInputs; diff --git a/lib/Main.js b/lib/Main.js deleted file mode 100644 index 3532d24..0000000 --- a/lib/Main.js +++ /dev/null @@ -1,71 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const github = __importStar(require("@actions/github")); -const core = __importStar(require("@actions/core")); -const Inputs_1 = require("./Inputs"); -const Releases_1 = require("./Releases"); -const Action_1 = require("./Action"); -const ArtifactUploader_1 = require("./ArtifactUploader"); -const ArtifactGlobber_1 = require("./ArtifactGlobber"); -const GithubError_1 = require("./GithubError"); -const Outputs_1 = require("./Outputs"); -const ArtifactDestroyer_1 = require("./ArtifactDestroyer"); -const ActionSkipper_1 = require("./ActionSkipper"); -function run() { - return __awaiter(this, void 0, void 0, function* () { - try { - const action = createAction(); - yield action.perform(); - } - catch (error) { - const githubError = new GithubError_1.GithubError(error); - core.setFailed(githubError.toString()); - } - }); -} -function createAction() { - const token = core.getInput('token'); - const context = github.context; - const git = github.getOctokit(token); - const globber = new ArtifactGlobber_1.FileArtifactGlobber(); - const inputs = new Inputs_1.CoreInputs(globber, context); - const outputs = new Outputs_1.CoreOutputs(); - const releases = new Releases_1.GithubReleases(inputs, git); - const skipper = new ActionSkipper_1.ReleaseActionSkipper(inputs.skipIfReleaseExists, releases, inputs.tag); - const uploader = new ArtifactUploader_1.GithubArtifactUploader(releases, inputs.replacesArtifacts, inputs.artifactErrorsFailBuild); - const artifactDestroyer = new ArtifactDestroyer_1.GithubArtifactDestroyer(releases); - return new Action_1.Action(inputs, outputs, releases, uploader, artifactDestroyer, skipper); -} -run(); diff --git a/lib/Outputs.js b/lib/Outputs.js deleted file mode 100644 index 06c902a..0000000 --- a/lib/Outputs.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CoreOutputs = void 0; -const core = __importStar(require("@actions/core")); -class CoreOutputs { - applyReleaseData(releaseData) { - core.setOutput('id', releaseData.id); - core.setOutput('html_url', releaseData.html_url); - core.setOutput('upload_url', releaseData.upload_url); - } -} -exports.CoreOutputs = CoreOutputs; diff --git a/lib/PathNormalizer.js b/lib/PathNormalizer.js deleted file mode 100644 index 3a5c0ba..0000000 --- a/lib/PathNormalizer.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PathNormalizer = void 0; -const path_1 = __importDefault(require("path")); -class PathNormalizer { - static normalizePath(pathString) { - return pathString.split(path_1.default.sep).join("/"); - } -} -exports.PathNormalizer = PathNormalizer; diff --git a/lib/ReleaseValidator.js b/lib/ReleaseValidator.js deleted file mode 100644 index 7b5cba6..0000000 --- a/lib/ReleaseValidator.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ReleaseValidator = void 0; -class ReleaseValidator { - constructor(updateOnlyUnreleased) { - this.updateOnlyUnreleased = updateOnlyUnreleased; - } - validateReleaseUpdate(releaseResponse) { - var _a; - if (!this.updateOnlyUnreleased) { - return; - } - if (!releaseResponse.draft && !releaseResponse.prerelease) { - throw new Error(`Tried to update "${(_a = releaseResponse.name) !== null && _a !== void 0 ? _a : "release"}" which is neither a draft or prerelease. (updateOnlyUnreleased is on)`); - } - } -} -exports.ReleaseValidator = ReleaseValidator; diff --git a/lib/Releases.js b/lib/Releases.js deleted file mode 100644 index 2da9101..0000000 --- a/lib/Releases.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GithubReleases = void 0; -class GithubReleases { - constructor(inputs, git) { - this.inputs = inputs; - this.git = git; - } - create(tag, body, commitHash, discussionCategory, draft, generateReleaseNotes, makeLatest, name, prerelease) { - return __awaiter(this, void 0, void 0, function* () { - // noinspection TypeScriptValidateJSTypes - return this.git.rest.repos.createRelease({ - body: body, - name: name, - discussion_category_name: discussionCategory, - draft: draft, - generate_release_notes: generateReleaseNotes, - make_latest: makeLatest, - owner: this.inputs.owner, - prerelease: prerelease, - repo: this.inputs.repo, - target_commitish: commitHash, - tag_name: tag - }); - }); - } - deleteArtifact(assetId) { - return __awaiter(this, void 0, void 0, function* () { - return this.git.rest.repos.deleteReleaseAsset({ - asset_id: assetId, - owner: this.inputs.owner, - repo: this.inputs.repo - }); - }); - } - getByTag(tag) { - return __awaiter(this, void 0, void 0, function* () { - return this.git.rest.repos.getReleaseByTag({ - owner: this.inputs.owner, - repo: this.inputs.repo, - tag: tag - }); - }); - } - listArtifactsForRelease(releaseId) { - return __awaiter(this, void 0, void 0, function* () { - return this.git.paginate(this.git.rest.repos.listReleaseAssets, { - owner: this.inputs.owner, - release_id: releaseId, - repo: this.inputs.repo - }); - }); - } - listReleases() { - return __awaiter(this, void 0, void 0, function* () { - return this.git.rest.repos.listReleases({ - owner: this.inputs.owner, - repo: this.inputs.repo - }); - }); - } - update(id, tag, body, commitHash, discussionCategory, draft, makeLatest, name, prerelease) { - return __awaiter(this, void 0, void 0, function* () { - // noinspection TypeScriptValidateJSTypes - return this.git.rest.repos.updateRelease({ - release_id: id, - body: body, - name: name, - discussion_category_name: discussionCategory, - draft: draft, - make_latest: makeLatest, - owner: this.inputs.owner, - prerelease: prerelease, - repo: this.inputs.repo, - target_commitish: commitHash, - tag_name: tag - }); - }); - } - uploadArtifact(assetUrl, contentLength, contentType, file, name, releaseId) { - return __awaiter(this, void 0, void 0, function* () { - return this.git.rest.repos.uploadReleaseAsset({ - url: assetUrl, - headers: { - "content-length": contentLength, - "content-type": contentType - }, - data: file, - name: name, - owner: this.inputs.owner, - release_id: releaseId, - repo: this.inputs.repo - }); - }); - } -} -exports.GithubReleases = GithubReleases;