Merge pull request #106 from regevbr/body_update
fix #42 - overwrite body and name as well
This commit is contained in:
commit
42c63808d6
25
dist/index.js
vendored
25
dist/index.js
vendored
@ -47,14 +47,16 @@ const glob = __importStar(__nccwpck_require__(7106));
|
|||||||
const attempt_1 = __nccwpck_require__(6494);
|
const attempt_1 = __nccwpck_require__(6494);
|
||||||
const releaseByTag = 'GET /repos/{owner}/{repo}/releases/tags/{tag}';
|
const releaseByTag = 'GET /repos/{owner}/{repo}/releases/tags/{tag}';
|
||||||
const createRelease = 'POST /repos/{owner}/{repo}/releases';
|
const createRelease = 'POST /repos/{owner}/{repo}/releases';
|
||||||
|
const updateRelease = 'PATCH /repos/{owner}/{repo}/releases/{release_id}';
|
||||||
const repoAssets = 'GET /repos/{owner}/{repo}/releases/{release_id}/assets';
|
const repoAssets = 'GET /repos/{owner}/{repo}/releases/{release_id}/assets';
|
||||||
const uploadAssets = 'POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}';
|
const uploadAssets = 'POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}';
|
||||||
const deleteAssets = 'DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}';
|
const deleteAssets = 'DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}';
|
||||||
function get_release_by_tag(tag, prerelease, make_latest, release_name, body, octokit) {
|
function get_release_by_tag(tag, prerelease, make_latest, release_name, body, octokit, overwrite) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
let release;
|
||||||
try {
|
try {
|
||||||
core.debug(`Getting release by tag ${tag}.`);
|
core.debug(`Getting release by tag ${tag}.`);
|
||||||
return yield octokit.request(releaseByTag, Object.assign(Object.assign({}, repo()), { tag: tag }));
|
release = yield octokit.request(releaseByTag, Object.assign(Object.assign({}, repo()), { tag: tag }));
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
// If this returns 404, we need to create the release first.
|
// If this returns 404, we need to create the release first.
|
||||||
@ -66,6 +68,23 @@ function get_release_by_tag(tag, prerelease, make_latest, release_name, body, oc
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let updateObject;
|
||||||
|
if (overwrite) {
|
||||||
|
if (release.data.name !== release_name) {
|
||||||
|
core.debug(`The ${tag} release already exists with a different name ${release.data.name} so we'll overwrite it.`);
|
||||||
|
updateObject = updateObject || {};
|
||||||
|
updateObject.name = release_name;
|
||||||
|
}
|
||||||
|
if (release.data.body !== body) {
|
||||||
|
core.debug(`The ${tag} release already exists with a different body ${release.data.body} so we'll overwrite it.`);
|
||||||
|
updateObject = updateObject || {};
|
||||||
|
updateObject.body = body;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (updateObject) {
|
||||||
|
return octokit.request(updateRelease, Object.assign(Object.assign(Object.assign({}, repo()), updateObject), { release_id: release.data.id }));
|
||||||
|
}
|
||||||
|
return release;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function upload_to_release(release, file, asset_name, tag, overwrite, octokit) {
|
function upload_to_release(release, file, asset_name, tag, overwrite, octokit) {
|
||||||
@ -148,7 +167,7 @@ function run() {
|
|||||||
.replace(/%0D/gi, '\r')
|
.replace(/%0D/gi, '\r')
|
||||||
.replace(/%25/g, '%');
|
.replace(/%25/g, '%');
|
||||||
const octokit = github.getOctokit(token);
|
const octokit = github.getOctokit(token);
|
||||||
const release = yield get_release_by_tag(tag, prerelease, make_latest, release_name, body, octokit);
|
const release = yield get_release_by_tag(tag, prerelease, make_latest, release_name, body, octokit, overwrite);
|
||||||
if (file_glob) {
|
if (file_glob) {
|
||||||
const files = glob.sync(file);
|
const files = glob.sync(file);
|
||||||
if (files.length > 0) {
|
if (files.length > 0) {
|
||||||
|
42
src/main.ts
42
src/main.ts
@ -9,6 +9,8 @@ import {retry} from '@lifeomic/attempt'
|
|||||||
|
|
||||||
const releaseByTag = 'GET /repos/{owner}/{repo}/releases/tags/{tag}' as const
|
const releaseByTag = 'GET /repos/{owner}/{repo}/releases/tags/{tag}' as const
|
||||||
const createRelease = 'POST /repos/{owner}/{repo}/releases' as const
|
const createRelease = 'POST /repos/{owner}/{repo}/releases' as const
|
||||||
|
const updateRelease =
|
||||||
|
'PATCH /repos/{owner}/{repo}/releases/{release_id}' as const
|
||||||
const repoAssets =
|
const repoAssets =
|
||||||
'GET /repos/{owner}/{repo}/releases/{release_id}/assets' as const
|
'GET /repos/{owner}/{repo}/releases/{release_id}/assets' as const
|
||||||
const uploadAssets =
|
const uploadAssets =
|
||||||
@ -20,6 +22,8 @@ type ReleaseByTagResp = Endpoints[typeof releaseByTag]['response']
|
|||||||
type CreateReleaseResp = Endpoints[typeof createRelease]['response']
|
type CreateReleaseResp = Endpoints[typeof createRelease]['response']
|
||||||
type RepoAssetsResp = Endpoints[typeof repoAssets]['response']['data']
|
type RepoAssetsResp = Endpoints[typeof repoAssets]['response']['data']
|
||||||
type UploadAssetResp = Endpoints[typeof uploadAssets]['response']
|
type UploadAssetResp = Endpoints[typeof uploadAssets]['response']
|
||||||
|
type UpdateReleaseResp = Endpoints[typeof updateRelease]['response']
|
||||||
|
type UpdateReleaseParams = Endpoints[typeof updateRelease]['parameters']
|
||||||
|
|
||||||
async function get_release_by_tag(
|
async function get_release_by_tag(
|
||||||
tag: string,
|
tag: string,
|
||||||
@ -27,11 +31,13 @@ async function get_release_by_tag(
|
|||||||
make_latest: boolean,
|
make_latest: boolean,
|
||||||
release_name: string,
|
release_name: string,
|
||||||
body: string,
|
body: string,
|
||||||
octokit: Octokit
|
octokit: Octokit,
|
||||||
): Promise<ReleaseByTagResp | CreateReleaseResp> {
|
overwrite: boolean
|
||||||
|
): Promise<ReleaseByTagResp | CreateReleaseResp | UpdateReleaseResp> {
|
||||||
|
let release: ReleaseByTagResp
|
||||||
try {
|
try {
|
||||||
core.debug(`Getting release by tag ${tag}.`)
|
core.debug(`Getting release by tag ${tag}.`)
|
||||||
return await octokit.request(releaseByTag, {
|
release = await octokit.request(releaseByTag, {
|
||||||
...repo(),
|
...repo(),
|
||||||
tag: tag
|
tag: tag
|
||||||
})
|
})
|
||||||
@ -53,10 +59,35 @@ async function get_release_by_tag(
|
|||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let updateObject: Partial<UpdateReleaseParams> | undefined
|
||||||
|
if (overwrite) {
|
||||||
|
if (release.data.name !== release_name) {
|
||||||
|
core.debug(
|
||||||
|
`The ${tag} release already exists with a different name ${release.data.name} so we'll overwrite it.`
|
||||||
|
)
|
||||||
|
updateObject = updateObject || {}
|
||||||
|
updateObject.name = release_name
|
||||||
|
}
|
||||||
|
if (release.data.body !== body) {
|
||||||
|
core.debug(
|
||||||
|
`The ${tag} release already exists with a different body ${release.data.body} so we'll overwrite it.`
|
||||||
|
)
|
||||||
|
updateObject = updateObject || {}
|
||||||
|
updateObject.body = body
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (updateObject) {
|
||||||
|
return octokit.request(updateRelease, {
|
||||||
|
...repo(),
|
||||||
|
...updateObject,
|
||||||
|
release_id: release.data.id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return release
|
||||||
}
|
}
|
||||||
|
|
||||||
async function upload_to_release(
|
async function upload_to_release(
|
||||||
release: ReleaseByTagResp | CreateReleaseResp,
|
release: ReleaseByTagResp | CreateReleaseResp | UpdateReleaseResp,
|
||||||
file: string,
|
file: string,
|
||||||
asset_name: string,
|
asset_name: string,
|
||||||
tag: string,
|
tag: string,
|
||||||
@ -169,7 +200,8 @@ async function run(): Promise<void> {
|
|||||||
make_latest,
|
make_latest,
|
||||||
release_name,
|
release_name,
|
||||||
body,
|
body,
|
||||||
octokit
|
octokit,
|
||||||
|
overwrite
|
||||||
)
|
)
|
||||||
|
|
||||||
if (file_glob) {
|
if (file_glob) {
|
||||||
|
Loading…
Reference in New Issue
Block a user