Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ability to update existing release body #36

Merged
merged 2 commits into from Jan 4, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Expand Up @@ -21,6 +21,6 @@ jobs:
# Ensure no changes, but ignore node_modules dir since dev/fresh ci deps installed.
run: |
git diff --exit-code --stat -- . ':!node_modules' \
|| (echo "##[error] found changed files after build. please 'npm run build && npm run format'" \
|| (echo "##[error] found changed files after build. please 'npm run build && npm run fmt'" \
"and check in all changes" \
&& exit 1)
23 changes: 22 additions & 1 deletion lib/github.js
Expand Up @@ -30,6 +30,9 @@ class GitHubReleaser {
createRelease(params) {
return this.github.repos.createRelease(params);
}
updateRelease(params) {
return this.github.repos.updateRelease(params);
}
allReleases(params) {
const updatedParams = Object.assign({ per_page: 100 }, params);
return this.github.paginate.iterator(this.github.repos.listReleases.endpoint.merge(updatedParams));
Expand Down Expand Up @@ -88,11 +91,29 @@ exports.release = (config, releaser) => __awaiter(void 0, void 0, void 0, functi
finally { if (e_1) throw e_1.error; }
}
}
let release = yield releaser.getReleaseByTag({
let existingRelease = yield releaser.getReleaseByTag({
owner,
repo,
tag
});
const release_id = existingRelease.data.id;
const target_commitish = existingRelease.data.target_commitish;
const tag_name = tag;
const name = config.input_name || tag;
const body = `${existingRelease.data.body}\n${util_1.releaseBody(config)}`;
const draft = config.input_draft;
const prerelease = config.input_prerelease;
const release = yield releaser.updateRelease({
owner,
repo,
release_id,
tag_name,
target_commitish,
name,
body,
draft,
prerelease
});
return release.data;
}
catch (error) {
Expand Down
51 changes: 50 additions & 1 deletion src/github.ts
Expand Up @@ -12,9 +12,12 @@ export interface ReleaseAsset {
}

export interface Release {
id: number;
upload_url: string;
html_url: string;
tag_name: string;
body: string;
target_commitish: string;
}

export interface Releaser {
Expand All @@ -34,6 +37,18 @@ export interface Releaser {
prerelease: boolean | undefined;
}): Promise<{ data: Release }>;

updateRelease(params: {
owner: string;
repo: string;
release_id: number;
tag_name: string;
target_commitish: string;
name: string;
body: string | undefined;
draft: boolean | undefined;
prerelease: boolean | undefined;
}): Promise<{ data: Release }>;

allReleases(params: {
owner: string;
repo: string;
Expand Down Expand Up @@ -66,6 +81,20 @@ export class GitHubReleaser implements Releaser {
return this.github.repos.createRelease(params);
}

updateRelease(params: {
owner: string;
repo: string;
release_id: number;
tag_name: string;
target_commitish: string;
name: string;
body: string | undefined;
draft: boolean | undefined;
prerelease: boolean | undefined;
}): Promise<{ data: Release }> {
return this.github.repos.updateRelease(params);
}

allReleases(params: {
owner: string;
repo: string;
Expand Down Expand Up @@ -128,11 +157,31 @@ export const release = async (
}
}
}
let release = await releaser.getReleaseByTag({
let existingRelease = await releaser.getReleaseByTag({
owner,
repo,
tag
});

const release_id = existingRelease.data.id;
const target_commitish = existingRelease.data.target_commitish;
const tag_name = tag;
const name = config.input_name || tag;
const body = `${existingRelease.data.body}\n${releaseBody(config)}`;
const draft = config.input_draft;
const prerelease = config.input_prerelease;

const release = await releaser.updateRelease({
owner,
repo,
release_id,
tag_name,
target_commitish,
name,
body,
draft,
prerelease
});
return release.data;
} catch (error) {
if (error.status === 404) {
Expand Down
4 changes: 2 additions & 2 deletions src/main.ts
Expand Up @@ -31,9 +31,9 @@ async function run() {
});
let rel = await release(config, new GitHubReleaser(gh));
if (config.input_files) {
const files = paths(config.input_files)
const files = paths(config.input_files);
if (files.length == 0) {
console.warn(`🤔 ${config.input_files} not include valid file.`)
console.warn(`🤔 ${config.input_files} not include valid file.`);
}
files.forEach(async path => {
await upload(gh, rel.upload_url, path);
Expand Down