Fixes #26 Update dependencies and fix octokit types
Fixes #27 Add inputs for specifying owner and repo
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { Action } from "../src/Action";
|
||||
import { Artifact } from "../src/Artifact";
|
||||
import { Inputs } from "../src/Inputs";
|
||||
import { Releases } from "../src/Releases";
|
||||
import { ArtifactUploader } from "../src/ArtifactUploader";
|
||||
import {Action} from "../src/Action";
|
||||
import {Artifact} from "../src/Artifact";
|
||||
import {Inputs} from "../src/Inputs";
|
||||
import {Releases} from "../src/Releases";
|
||||
import {ArtifactUploader} from "../src/ArtifactUploader";
|
||||
|
||||
const createMock = jest.fn()
|
||||
const deleteMock = jest.fn()
|
||||
@@ -51,7 +51,7 @@ describe("Action", () => {
|
||||
|
||||
it('creates release if no release exists to update', async () => {
|
||||
const action = createAction(true, true)
|
||||
const error = { status: 404 }
|
||||
const error = {status: 404}
|
||||
getMock.mockRejectedValue(error)
|
||||
|
||||
await action.perform()
|
||||
@@ -62,11 +62,11 @@ describe("Action", () => {
|
||||
|
||||
it('creates release if no draft releases', async () => {
|
||||
const action = createAction(true, true)
|
||||
const error = { status: 404 }
|
||||
const error = {status: 404}
|
||||
getMock.mockRejectedValue(error)
|
||||
listMock.mockResolvedValue({
|
||||
data: [
|
||||
{ id: id, draft: false, tag_name: tag }
|
||||
{id: id, draft: false, tag_name: tag}
|
||||
]
|
||||
})
|
||||
|
||||
@@ -159,12 +159,12 @@ describe("Action", () => {
|
||||
|
||||
it('updates draft release', async () => {
|
||||
const action = createAction(true, true)
|
||||
const error = { status: 404 }
|
||||
const error = {status: 404}
|
||||
getMock.mockRejectedValue(error)
|
||||
listMock.mockResolvedValue({
|
||||
data: [
|
||||
{ id: 123, draft: false, tag_name: tag },
|
||||
{ id: id, draft: true, tag_name: tag }
|
||||
{id: 123, draft: false, tag_name: tag},
|
||||
{id: id, draft: true, tag_name: tag}
|
||||
]
|
||||
})
|
||||
|
||||
@@ -244,8 +244,10 @@ describe("Action", () => {
|
||||
createdReleaseName: createName,
|
||||
commit: commit,
|
||||
draft: draft,
|
||||
owner: "owner",
|
||||
prerelease: prerelease,
|
||||
replacesArtifacts: replacesArtifacts,
|
||||
repo: "repo",
|
||||
tag: tag,
|
||||
token: token,
|
||||
updatedReleaseBody: updateBody,
|
||||
|
||||
@@ -164,6 +164,18 @@ describe('Inputs', () => {
|
||||
expect(inputs.draft).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
describe('owner', () => {
|
||||
it('returns owner from context', function () {
|
||||
process.env.GITHUB_REPOSITORY = "owner/repo"
|
||||
mockGetInput.mockReturnValue("")
|
||||
expect(inputs.owner).toBe("owner")
|
||||
});
|
||||
it('returns owner from inputs', function () {
|
||||
mockGetInput.mockReturnValue("owner")
|
||||
expect(inputs.owner).toBe("owner")
|
||||
});
|
||||
})
|
||||
|
||||
describe('prerelase', () => {
|
||||
it('returns false', () => {
|
||||
@@ -187,6 +199,18 @@ describe('Inputs', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('repo', () => {
|
||||
it('returns repo from context', function () {
|
||||
process.env.GITHUB_REPOSITORY = "owner/repo"
|
||||
mockGetInput.mockReturnValue("")
|
||||
expect(inputs.repo).toBe("repo")
|
||||
});
|
||||
it('returns repo from inputs', function () {
|
||||
mockGetInput.mockReturnValue("repo")
|
||||
expect(inputs.repo).toBe("repo")
|
||||
});
|
||||
})
|
||||
|
||||
describe('tag', () => {
|
||||
it('returns input tag', () => {
|
||||
mockGetInput.mockReturnValue('tag')
|
||||
|
||||
57
__tests__/Integration.test.ts
Normal file
57
__tests__/Integration.test.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import {Action} from "../src/Action";
|
||||
import * as github from "@actions/github";
|
||||
import {Inputs} from "../src/Inputs";
|
||||
import {GithubReleases} from "../src/Releases";
|
||||
import {GithubArtifactUploader} from "../src/ArtifactUploader";
|
||||
import {Artifact} from "../src/Artifact";
|
||||
import * as path from "path";
|
||||
|
||||
// This test is currently intended to be manually run during development. To run:
|
||||
// - Make sure you have an environment variable named GITHUB_TOKEN assigned to your token
|
||||
// - Remove skip from the test below
|
||||
describe.skip('Integration Test', () => {
|
||||
let action: Action
|
||||
|
||||
beforeEach(() => {
|
||||
const token = getToken()
|
||||
const git = github.getOctokit(token)
|
||||
|
||||
const inputs = getInputs()
|
||||
const releases = new GithubReleases(inputs, git)
|
||||
const uploader = new GithubArtifactUploader(releases, inputs.replacesArtifacts)
|
||||
action = new Action(inputs, releases, uploader)
|
||||
})
|
||||
|
||||
it('Performs action', async () => {
|
||||
await action.perform()
|
||||
})
|
||||
|
||||
function getInputs(): Inputs {
|
||||
const artifactPath = path.join(__dirname, 'Integration.test.ts')
|
||||
// new
|
||||
const MockInputs = jest.fn<Inputs, any>(() => {
|
||||
return {
|
||||
allowUpdates: true,
|
||||
artifacts: [new Artifact(artifactPath)],
|
||||
createdReleaseBody: "release body",
|
||||
createdReleaseName: "release name",
|
||||
commit: "",
|
||||
draft: false,
|
||||
owner: "ncipollo",
|
||||
prerelease: true,
|
||||
replacesArtifacts: true,
|
||||
repo: "actions-playground",
|
||||
tag: "0.0.71",
|
||||
token: getToken(),
|
||||
updatedReleaseBody: "updated body",
|
||||
updatedReleaseName: "updated name"
|
||||
}
|
||||
})
|
||||
return new MockInputs();
|
||||
}
|
||||
|
||||
function getToken(): string {
|
||||
return process.env.GITHUB_TOKEN ?? ""
|
||||
}
|
||||
|
||||
})
|
||||
@@ -55,6 +55,10 @@ inputs:
|
||||
description: 'Indicates if the release name should be omitted during updates. The name will still be applied for newly created releases. This will preserve the existing name during updates.'
|
||||
required: false
|
||||
default: 'false'
|
||||
owner:
|
||||
description: "Optionally specify the owner of the repo where the release should be generated. Defaults to current repo's owner."
|
||||
required: false
|
||||
default: ''
|
||||
prerelease:
|
||||
description: "Optionally marks this release as prerelease. Set to true to enable."
|
||||
required: false
|
||||
@@ -63,6 +67,10 @@ inputs:
|
||||
description: "Indicates if existing release artifacts should be replaced. Defaults to true."
|
||||
required: false
|
||||
default: 'true'
|
||||
repo:
|
||||
description: "Optionally specify the repo where the release should be generated. Defaults to current repo"
|
||||
required: false
|
||||
default: ''
|
||||
tag:
|
||||
description: 'An optional tag for the release. If this is omitted the git ref will be used (if it is a tag).'
|
||||
required: false
|
||||
|
||||
@@ -10,8 +10,8 @@ class Action {
|
||||
}
|
||||
async perform() {
|
||||
const releaseResponse = await this.createOrUpdateRelease();
|
||||
const releaseId = releaseResponse.id;
|
||||
const uploadUrl = releaseResponse.upload_url;
|
||||
const releaseId = releaseResponse.data.id;
|
||||
const uploadUrl = releaseResponse.data.upload_url;
|
||||
const artifacts = this.inputs.artifacts;
|
||||
if (artifacts.length > 0) {
|
||||
await this.uploader.uploadArtifacts(artifacts, releaseId, uploadUrl);
|
||||
@@ -37,8 +37,7 @@ class Action {
|
||||
}
|
||||
}
|
||||
async updateRelease(id) {
|
||||
const response = await this.releases.update(id, this.inputs.tag, this.inputs.updatedReleaseBody, this.inputs.commit, this.inputs.draft, this.inputs.updatedReleaseName, this.inputs.prerelease);
|
||||
return response.data;
|
||||
return await this.releases.update(id, this.inputs.tag, this.inputs.updatedReleaseBody, this.inputs.commit, this.inputs.draft, this.inputs.updatedReleaseName, this.inputs.prerelease);
|
||||
}
|
||||
static noPublishedRelease(error) {
|
||||
const errorMessage = new ErrorMessage_1.ErrorMessage(error);
|
||||
@@ -62,7 +61,7 @@ class Action {
|
||||
}
|
||||
async createRelease() {
|
||||
const response = await this.releases.create(this.inputs.tag, this.inputs.createdReleaseBody, this.inputs.commit, this.inputs.draft, this.inputs.createdReleaseName, this.inputs.prerelease);
|
||||
return response.data;
|
||||
return response;
|
||||
}
|
||||
}
|
||||
exports.Action = Action;
|
||||
|
||||
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
||||
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.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
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;
|
||||
};
|
||||
|
||||
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
||||
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.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
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;
|
||||
};
|
||||
@@ -87,6 +87,13 @@ class CoreInputs {
|
||||
const draft = core.getInput('draft');
|
||||
return draft == 'true';
|
||||
}
|
||||
get owner() {
|
||||
let owner = core.getInput('owner');
|
||||
if (owner) {
|
||||
return owner;
|
||||
}
|
||||
return this.context.repo.owner;
|
||||
}
|
||||
get prerelease() {
|
||||
const preRelease = core.getInput('prerelease');
|
||||
return preRelease == 'true';
|
||||
@@ -95,6 +102,13 @@ class CoreInputs {
|
||||
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 tag() {
|
||||
const tag = core.getInput('tag');
|
||||
if (tag) {
|
||||
|
||||
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
||||
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.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
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;
|
||||
};
|
||||
@@ -43,7 +43,7 @@ function createAction() {
|
||||
const git = github.getOctokit(token);
|
||||
const globber = new ArtifactGlobber_1.FileArtifactGlobber();
|
||||
const inputs = new Inputs_1.CoreInputs(globber, context);
|
||||
const releases = new Releases_1.GithubReleases(context, git);
|
||||
const releases = new Releases_1.GithubReleases(inputs, git);
|
||||
const uploader = new ArtifactUploader_1.GithubArtifactUploader(releases, inputs.replacesArtifacts);
|
||||
return new Action_1.Action(inputs, releases, uploader);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.GithubReleases = void 0;
|
||||
class GithubReleases {
|
||||
constructor(context, git) {
|
||||
this.context = context;
|
||||
constructor(inputs, git) {
|
||||
this.inputs = inputs;
|
||||
this.git = git;
|
||||
}
|
||||
async create(tag, body, commitHash, draft, name, prerelease) {
|
||||
@@ -12,9 +12,9 @@ class GithubReleases {
|
||||
body: body,
|
||||
name: name,
|
||||
draft: draft,
|
||||
owner: this.context.repo.owner,
|
||||
owner: this.inputs.owner,
|
||||
prerelease: prerelease,
|
||||
repo: this.context.repo.repo,
|
||||
repo: this.inputs.repo,
|
||||
target_commitish: commitHash,
|
||||
tag_name: tag
|
||||
});
|
||||
@@ -22,30 +22,30 @@ class GithubReleases {
|
||||
async deleteArtifact(assetId) {
|
||||
return this.git.repos.deleteReleaseAsset({
|
||||
asset_id: assetId,
|
||||
owner: this.context.repo.owner,
|
||||
repo: this.context.repo.repo
|
||||
});
|
||||
}
|
||||
async listArtifactsForRelease(releaseId) {
|
||||
return this.git.repos.listReleaseAssets({
|
||||
owner: this.context.repo.owner,
|
||||
release_id: releaseId,
|
||||
repo: this.context.repo.repo
|
||||
});
|
||||
}
|
||||
async listReleases() {
|
||||
return this.git.repos.listReleases({
|
||||
owner: this.context.repo.owner,
|
||||
repo: this.context.repo.repo
|
||||
owner: this.inputs.owner,
|
||||
repo: this.inputs.repo
|
||||
});
|
||||
}
|
||||
async getByTag(tag) {
|
||||
return this.git.repos.getReleaseByTag({
|
||||
owner: this.context.repo.owner,
|
||||
repo: this.context.repo.repo,
|
||||
owner: this.inputs.owner,
|
||||
repo: this.inputs.repo,
|
||||
tag: tag
|
||||
});
|
||||
}
|
||||
async listArtifactsForRelease(releaseId) {
|
||||
return this.git.repos.listReleaseAssets({
|
||||
owner: this.inputs.owner,
|
||||
release_id: releaseId,
|
||||
repo: this.inputs.repo
|
||||
});
|
||||
}
|
||||
async listReleases() {
|
||||
return this.git.repos.listReleases({
|
||||
owner: this.inputs.owner,
|
||||
repo: this.inputs.repo
|
||||
});
|
||||
}
|
||||
async update(id, tag, body, commitHash, draft, name, prerelease) {
|
||||
// noinspection TypeScriptValidateJSTypes
|
||||
return this.git.repos.updateRelease({
|
||||
@@ -53,9 +53,9 @@ class GithubReleases {
|
||||
body: body,
|
||||
name: name,
|
||||
draft: draft,
|
||||
owner: this.context.repo.owner,
|
||||
owner: this.inputs.owner,
|
||||
prerelease: prerelease,
|
||||
repo: this.context.repo.repo,
|
||||
repo: this.inputs.repo,
|
||||
target_commitish: commitHash,
|
||||
tag_name: tag
|
||||
});
|
||||
@@ -69,9 +69,9 @@ class GithubReleases {
|
||||
},
|
||||
data: file,
|
||||
name: name,
|
||||
owner: this.context.repo.owner,
|
||||
owner: this.inputs.owner,
|
||||
release_id: releaseId,
|
||||
repo: this.context.repo.repo
|
||||
repo: this.inputs.repo
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
10
package.json
10
package.json
@@ -31,11 +31,11 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/glob": "^7.1.1",
|
||||
"@types/jest": "^26.0.5",
|
||||
"@types/node": "^12.0.4",
|
||||
"@types/jest": "^26.0.20",
|
||||
"@types/node": "^14.14.25",
|
||||
"jest": "^26.1.0",
|
||||
"jest-circus": "^26.1.0",
|
||||
"ts-jest": "^26.1.3",
|
||||
"typescript": "^3.9.7"
|
||||
"jest-circus": "^26.6.3",
|
||||
"ts-jest": "^26.5.1",
|
||||
"typescript": "^4.1.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { Inputs } from "./Inputs";
|
||||
import { Releases } from "./Releases";
|
||||
import { ReposCreateReleaseResponseData } from "@octokit/types";
|
||||
import { ArtifactUploader } from "./ArtifactUploader";
|
||||
import { ErrorMessage } from "./ErrorMessage";
|
||||
import {Inputs} from "./Inputs";
|
||||
import {CreateReleaseResponse, Releases, UpdateReleaseResponse} from "./Releases";
|
||||
import {ArtifactUploader} from "./ArtifactUploader";
|
||||
import {ErrorMessage} from "./ErrorMessage";
|
||||
|
||||
export class Action {
|
||||
private inputs: Inputs
|
||||
@@ -17,8 +16,8 @@ export class Action {
|
||||
|
||||
async perform() {
|
||||
const releaseResponse = await this.createOrUpdateRelease();
|
||||
const releaseId = releaseResponse.id
|
||||
const uploadUrl = releaseResponse.upload_url
|
||||
const releaseId = releaseResponse.data.id
|
||||
const uploadUrl = releaseResponse.data.upload_url
|
||||
|
||||
const artifacts = this.inputs.artifacts
|
||||
if (artifacts.length > 0) {
|
||||
@@ -26,7 +25,7 @@ export class Action {
|
||||
}
|
||||
}
|
||||
|
||||
private async createOrUpdateRelease(): Promise<ReposCreateReleaseResponseData> {
|
||||
private async createOrUpdateRelease(): Promise<CreateReleaseResponse | UpdateReleaseResponse> {
|
||||
if (this.inputs.allowUpdates) {
|
||||
try {
|
||||
const getResponse = await this.releases.getByTag(this.inputs.tag)
|
||||
@@ -43,8 +42,8 @@ export class Action {
|
||||
}
|
||||
}
|
||||
|
||||
private async updateRelease(id: number): Promise<ReposCreateReleaseResponseData> {
|
||||
const response = await this.releases.update(
|
||||
private async updateRelease(id: number): Promise<UpdateReleaseResponse> {
|
||||
return await this.releases.update(
|
||||
id,
|
||||
this.inputs.tag,
|
||||
this.inputs.updatedReleaseBody,
|
||||
@@ -53,8 +52,6 @@ export class Action {
|
||||
this.inputs.updatedReleaseName,
|
||||
this.inputs.prerelease
|
||||
)
|
||||
|
||||
return response.data
|
||||
}
|
||||
|
||||
private static noPublishedRelease(error: any): boolean {
|
||||
@@ -62,7 +59,7 @@ export class Action {
|
||||
return errorMessage.status == 404
|
||||
}
|
||||
|
||||
private async updateDraftOrCreateRelease(): Promise<ReposCreateReleaseResponseData> {
|
||||
private async updateDraftOrCreateRelease(): Promise<CreateReleaseResponse | UpdateReleaseResponse> {
|
||||
const draftReleaseId = await this.findMatchingDraftReleaseId()
|
||||
if (draftReleaseId) {
|
||||
return await this.updateRelease(draftReleaseId)
|
||||
@@ -80,7 +77,7 @@ export class Action {
|
||||
return draftRelease?.id
|
||||
}
|
||||
|
||||
private async createRelease(): Promise<ReposCreateReleaseResponseData> {
|
||||
private async createRelease(): Promise<CreateReleaseResponse> {
|
||||
const response = await this.releases.create(
|
||||
this.inputs.tag,
|
||||
this.inputs.createdReleaseBody,
|
||||
@@ -90,6 +87,6 @@ export class Action {
|
||||
this.inputs.prerelease
|
||||
)
|
||||
|
||||
return response.data
|
||||
return response
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,10 @@ export interface Inputs {
|
||||
readonly createdReleaseBody?: string
|
||||
readonly createdReleaseName?: string
|
||||
readonly draft: boolean
|
||||
readonly owner: string
|
||||
readonly prerelease: boolean
|
||||
readonly replacesArtifacts: boolean
|
||||
readonly repo: string
|
||||
readonly tag: string
|
||||
readonly token: string
|
||||
readonly updatedReleaseBody?: string
|
||||
@@ -99,6 +101,14 @@ export class CoreInputs implements Inputs {
|
||||
return draft == 'true'
|
||||
}
|
||||
|
||||
get owner(): string {
|
||||
let owner = core.getInput('owner')
|
||||
if (owner) {
|
||||
return owner
|
||||
}
|
||||
return this.context.repo.owner
|
||||
}
|
||||
|
||||
get prerelease(): boolean {
|
||||
const preRelease = core.getInput('prerelease')
|
||||
return preRelease == 'true'
|
||||
@@ -109,6 +119,14 @@ export class CoreInputs implements Inputs {
|
||||
return replaces == 'true'
|
||||
}
|
||||
|
||||
get repo(): string {
|
||||
let repo = core.getInput('repo')
|
||||
if (repo) {
|
||||
return repo
|
||||
}
|
||||
return this.context.repo.repo
|
||||
}
|
||||
|
||||
get tag(): string {
|
||||
const tag = core.getInput('tag')
|
||||
if (tag) {
|
||||
|
||||
@@ -24,7 +24,7 @@ function createAction(): Action {
|
||||
const globber = new FileArtifactGlobber()
|
||||
|
||||
const inputs = new CoreInputs(globber, context)
|
||||
const releases = new GithubReleases(context, git)
|
||||
const releases = new GithubReleases(inputs, git)
|
||||
const uploader = new GithubArtifactUploader(releases, inputs.replacesArtifacts)
|
||||
return new Action(inputs, releases, uploader)
|
||||
}
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import {Context} from "@actions/github/lib/context";
|
||||
import { GitHub } from '@actions/github/lib/utils'
|
||||
import {
|
||||
OctokitResponse,
|
||||
ReposListReleaseAssetsResponseData,
|
||||
ReposCreateReleaseResponseData,
|
||||
ReposGetReleaseByTagResponseData,
|
||||
ReposListReleasesResponseData,
|
||||
ReposUploadReleaseAssetResponseData
|
||||
} from "@octokit/types";
|
||||
import {GitHub} from '@actions/github/lib/utils'
|
||||
import {OctokitResponse} from "@octokit/types";
|
||||
import {RestEndpointMethodTypes} from "@octokit/plugin-rest-endpoint-methods";
|
||||
import {Inputs} from "./Inputs";
|
||||
|
||||
export type CreateReleaseResponse = RestEndpointMethodTypes["repos"]["createRelease"]["response"]
|
||||
export type ReleaseByTagResponse = RestEndpointMethodTypes["repos"]["getReleaseByTag"]["response"]
|
||||
export type ListReleasesResponse = RestEndpointMethodTypes["repos"]["listReleases"]["response"]
|
||||
export type ListReleaseAssetsResponse = RestEndpointMethodTypes["repos"]["listReleaseAssets"]["response"]
|
||||
export type UpdateReleaseResponse = RestEndpointMethodTypes["repos"]["updateRelease"]["response"]
|
||||
export type UploadArtifactResponse = RestEndpointMethodTypes["repos"]["uploadReleaseAsset"]["response"]
|
||||
|
||||
export interface Releases {
|
||||
create(
|
||||
@@ -17,15 +18,15 @@ export interface Releases {
|
||||
draft?: boolean,
|
||||
name?: string,
|
||||
prerelease?: boolean
|
||||
): Promise<OctokitResponse<ReposCreateReleaseResponseData>>
|
||||
): Promise<CreateReleaseResponse>
|
||||
|
||||
deleteArtifact(assetId: number): Promise<OctokitResponse<any>>
|
||||
|
||||
getByTag(tag: string): Promise<OctokitResponse<ReposGetReleaseByTagResponseData>>
|
||||
getByTag(tag: string): Promise<ReleaseByTagResponse>
|
||||
|
||||
listArtifactsForRelease(releaseId: number): Promise<OctokitResponse<ReposListReleaseAssetsResponseData>>
|
||||
listArtifactsForRelease(releaseId: number): Promise<ListReleaseAssetsResponse>
|
||||
|
||||
listReleases(): Promise<OctokitResponse<ReposListReleasesResponseData>>
|
||||
listReleases(): Promise<ListReleasesResponse>
|
||||
|
||||
update(
|
||||
id: number,
|
||||
@@ -35,7 +36,7 @@ export interface Releases {
|
||||
draft?: boolean,
|
||||
name?: string,
|
||||
prerelease?: boolean
|
||||
): Promise<OctokitResponse<ReposCreateReleaseResponseData>>
|
||||
): Promise<UpdateReleaseResponse>
|
||||
|
||||
uploadArtifact(
|
||||
assetUrl: string,
|
||||
@@ -44,15 +45,15 @@ export interface Releases {
|
||||
file: string | object,
|
||||
name: string,
|
||||
releaseId: number,
|
||||
): Promise<OctokitResponse<ReposUploadReleaseAssetResponseData>>
|
||||
): Promise<UploadArtifactResponse>
|
||||
}
|
||||
|
||||
export class GithubReleases implements Releases {
|
||||
context: Context
|
||||
git: InstanceType<typeof GitHub>
|
||||
inputs: Inputs
|
||||
|
||||
constructor(context: Context, git: InstanceType<typeof GitHub>) {
|
||||
this.context = context
|
||||
constructor(inputs: Inputs, git: InstanceType<typeof GitHub>) {
|
||||
this.inputs = inputs
|
||||
this.git = git
|
||||
}
|
||||
|
||||
@@ -63,15 +64,15 @@ export class GithubReleases implements Releases {
|
||||
draft?: boolean,
|
||||
name?: string,
|
||||
prerelease?: boolean
|
||||
): Promise<OctokitResponse<ReposCreateReleaseResponseData>> {
|
||||
): Promise<CreateReleaseResponse> {
|
||||
// noinspection TypeScriptValidateJSTypes
|
||||
return this.git.repos.createRelease({
|
||||
body: body,
|
||||
name: name,
|
||||
draft: draft,
|
||||
owner: this.context.repo.owner,
|
||||
owner: this.inputs.owner,
|
||||
prerelease: prerelease,
|
||||
repo: this.context.repo.repo,
|
||||
repo: this.inputs.repo,
|
||||
target_commitish: commitHash,
|
||||
tag_name: tag
|
||||
})
|
||||
@@ -82,33 +83,33 @@ export class GithubReleases implements Releases {
|
||||
): Promise<OctokitResponse<any>> {
|
||||
return this.git.repos.deleteReleaseAsset({
|
||||
asset_id: assetId,
|
||||
owner: this.context.repo.owner,
|
||||
repo: this.context.repo.repo
|
||||
owner: this.inputs.owner,
|
||||
repo: this.inputs.repo
|
||||
})
|
||||
}
|
||||
|
||||
async getByTag(tag: string): Promise<ReleaseByTagResponse> {
|
||||
return this.git.repos.getReleaseByTag({
|
||||
owner: this.inputs.owner,
|
||||
repo: this.inputs.repo,
|
||||
tag: tag
|
||||
})
|
||||
}
|
||||
|
||||
async listArtifactsForRelease(
|
||||
releaseId: number
|
||||
): Promise<OctokitResponse<ReposListReleaseAssetsResponseData>> {
|
||||
): Promise<ListReleaseAssetsResponse> {
|
||||
return this.git.repos.listReleaseAssets({
|
||||
owner: this.context.repo.owner,
|
||||
owner: this.inputs.owner,
|
||||
release_id: releaseId,
|
||||
repo: this.context.repo.repo
|
||||
repo: this.inputs.repo
|
||||
})
|
||||
}
|
||||
|
||||
async listReleases(): Promise<OctokitResponse<ReposListReleasesResponseData>> {
|
||||
async listReleases(): Promise<ListReleasesResponse> {
|
||||
return this.git.repos.listReleases({
|
||||
owner: this.context.repo.owner,
|
||||
repo: this.context.repo.repo
|
||||
})
|
||||
}
|
||||
|
||||
async getByTag(tag: string): Promise<OctokitResponse<ReposGetReleaseByTagResponseData>> {
|
||||
return this.git.repos.getReleaseByTag({
|
||||
owner: this.context.repo.owner,
|
||||
repo: this.context.repo.repo,
|
||||
tag: tag
|
||||
owner: this.inputs.owner,
|
||||
repo: this.inputs.repo
|
||||
})
|
||||
}
|
||||
|
||||
@@ -120,16 +121,16 @@ export class GithubReleases implements Releases {
|
||||
draft?: boolean,
|
||||
name?: string,
|
||||
prerelease?: boolean
|
||||
): Promise<OctokitResponse<ReposCreateReleaseResponseData>> {
|
||||
): Promise<UpdateReleaseResponse> {
|
||||
// noinspection TypeScriptValidateJSTypes
|
||||
return this.git.repos.updateRelease({
|
||||
release_id: id,
|
||||
body: body,
|
||||
name: name,
|
||||
draft: draft,
|
||||
owner: this.context.repo.owner,
|
||||
owner: this.inputs.owner,
|
||||
prerelease: prerelease,
|
||||
repo: this.context.repo.repo,
|
||||
repo: this.inputs.repo,
|
||||
target_commitish: commitHash,
|
||||
tag_name: tag
|
||||
})
|
||||
@@ -142,7 +143,7 @@ export class GithubReleases implements Releases {
|
||||
file: string | object,
|
||||
name: string,
|
||||
releaseId: number,
|
||||
): Promise<OctokitResponse<ReposUploadReleaseAssetResponseData>> {
|
||||
): Promise<UploadArtifactResponse> {
|
||||
return this.git.repos.uploadReleaseAsset({
|
||||
url: assetUrl,
|
||||
headers: {
|
||||
@@ -151,9 +152,9 @@ export class GithubReleases implements Releases {
|
||||
},
|
||||
data: file as any,
|
||||
name: name,
|
||||
owner: this.context.repo.owner,
|
||||
owner: this.inputs.owner,
|
||||
release_id: releaseId,
|
||||
repo: this.context.repo.repo
|
||||
repo: this.inputs.repo
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user