Specify owner, repo

This commit is contained in:
Giao Ho
2021-04-03 17:38:15 +07:00
parent 0b6cf37245
commit bf72151eb7
5 changed files with 62 additions and 11 deletions
+9
View File
@@ -2,6 +2,15 @@ name: Get Release
description: Get a release by tag, latest or current release
author: Giao Ho
inputs:
owner:
# Default: Current owner
description: The name of the owner of the repo. Used to identify the owner of the repository.
required: false
repo:
# Default: Current repository
description: The name of the repository. Used to identify the repository on which to release.
required: false
tag_name:
description: Specify tag instead of using checkout tag.
required: false
+23 -5
View File
@@ -5898,6 +5898,8 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.Outputs = exports.Inputs = void 0;
var Inputs;
(function (Inputs) {
Inputs["Owner"] = "owner";
Inputs["Repo"] = "repo";
Inputs["TagName"] = "tag_name";
Inputs["Latest"] = "latest";
Inputs["Pattern"] = "pattern";
@@ -5993,14 +5995,17 @@ exports.handlerError = handlerError;
try {
const inputs = io_helper_1.getInputs();
const github = github_1.getOctokit(process.env.GITHUB_TOKEN);
const { owner, repo } = github_1.context.repo;
if (!inputs.latest) {
if (!io_helper_1.isNotBlank(inputs.tag))
handlerError('Current release not found', inputs.throwing);
else {
try {
const releaseResponse = yield github.repos
.getReleaseByTag({ owner, repo, tag: inputs.tag });
.getReleaseByTag({
owner: inputs.owner,
repo: inputs.repo,
tag: inputs.tag
});
if (isSuccessStatusCode(releaseResponse.status))
io_helper_1.setOutputs(releaseResponse.data, inputs.debug);
else
@@ -6015,7 +6020,10 @@ exports.handlerError = handlerError;
}
}
else {
const listResponse = yield github.repos.listReleases({ owner, repo });
const listResponse = yield github.repos.listReleases({
owner: inputs.owner,
repo: inputs.repo
});
if (isSuccessStatusCode(listResponse.status)) {
const releaseList = listResponse.data
.filter(release => !release.draft &&
@@ -6024,8 +6032,12 @@ exports.handlerError = handlerError;
const latestRelease = findLatestRelease(releaseList);
if (io_helper_1.isNotBlank(latestRelease))
io_helper_1.setOutputs(latestRelease, inputs.debug);
else
handlerError('The latest release was not found', inputs.throwing);
else {
if (!!inputs.pattern)
handlerError(`No release had a tag name matching /${inputs.pattern.source}/`, inputs.throwing);
else
handlerError('The latest release was not found', inputs.throwing);
}
}
else
throw new Error(`Unexpected http ${listResponse.status} during get release list`);
@@ -6087,6 +6099,12 @@ function getInputs() {
draft: false,
prerelease: false
};
result.owner = core.getInput(constants_1.Inputs.Owner, { required: false });
if (isNotBlank(result.owner))
result.owner = github_1.context.repo.owner;
result.repo = core.getInput(constants_1.Inputs.Repo, { required: false });
if (isNotBlank(result.repo))
result.repo = github_1.context.repo.repo;
const tag = core.getInput(constants_1.Inputs.TagName, { required: false });
if (isNotBlank(tag))
result.tag = tag.trim();
+2
View File
@@ -1,4 +1,6 @@
export enum Inputs {
Owner = 'owner',
Repo = 'repo',
TagName = 'tag_name',
Latest = 'latest',
Pattern = 'pattern',
+18 -6
View File
@@ -1,5 +1,5 @@
import * as core from '@actions/core';
import {context, getOctokit} from '@actions/github';
import {getOctokit} from '@actions/github';
import {getInputs, isNotBlank, ReleaseInputs, setOutputs} from './io-helper';
export function isSuccessStatusCode(statusCode?: number): boolean {
@@ -32,8 +32,6 @@ export function handlerError(message: string, throwing: boolean) {
try {
const inputs: ReleaseInputs = getInputs();
const github = getOctokit(process.env.GITHUB_TOKEN as string);
// Get owner and repo from context of payload that triggered the action
const {owner, repo} = context.repo;
if (!inputs.latest) {
if (!isNotBlank(inputs.tag))
@@ -42,7 +40,11 @@ export function handlerError(message: string, throwing: boolean) {
try {
// Get a release from the tag name
const releaseResponse = await github.repos
.getReleaseByTag({owner, repo, tag: inputs.tag});
.getReleaseByTag({
owner: inputs.owner,
repo: inputs.repo,
tag: inputs.tag
});
if (isSuccessStatusCode(releaseResponse.status))
setOutputs(releaseResponse.data, inputs.debug);
@@ -56,7 +58,10 @@ export function handlerError(message: string, throwing: boolean) {
}
}
} else {
const listResponse = await github.repos.listReleases({owner, repo});
const listResponse = await github.repos.listReleases({
owner: inputs.owner,
repo: inputs.repo
});
if (isSuccessStatusCode(listResponse.status)) {
const releaseList = listResponse.data
@@ -67,7 +72,14 @@ export function handlerError(message: string, throwing: boolean) {
const latestRelease: any = findLatestRelease(releaseList);
if (isNotBlank(latestRelease))
setOutputs(latestRelease, inputs.debug);
else handlerError('The latest release was not found', inputs.throwing);
else {
if (!!inputs.pattern)
handlerError(`No release had a tag name matching /${inputs.pattern.source}/`,
inputs.throwing);
else
handlerError('The latest release was not found',
inputs.throwing);
}
} else
throw new Error(`Unexpected http ${listResponse.status} during get release list`);
}
+10
View File
@@ -4,6 +4,8 @@ import {context} from '@actions/github';
import {Inputs, Outputs} from './constants';
export interface ReleaseInputs {
owner: string;
repo: string;
tag: string;
latest: boolean;
@@ -35,6 +37,14 @@ export function getInputs(): ReleaseInputs {
prerelease: false
};
result.owner = core.getInput(Inputs.Owner, {required: false});
if (isNotBlank(result.owner))
result.owner = context.repo.owner;
result.repo = core.getInput(Inputs.Repo, {required: false});
if (isNotBlank(result.repo))
result.repo = context.repo.repo;
const tag = core.getInput(Inputs.TagName, {required: false});
if (isNotBlank(tag))
result.tag = tag.trim();