diff --git a/src/github.ts b/src/github.ts index eaf3a70..b22ad86 100644 --- a/src/github.ts +++ b/src/github.ts @@ -44,7 +44,7 @@ export interface Releaser { target_commitish: string | undefined; discussion_category_name: string | undefined; generate_release_notes: boolean | undefined; - make_latest: string | undefined; + make_latest: "true" | "false" | "legacy" | undefined; }): Promise<{ data: Release }>; updateRelease(params: { @@ -59,7 +59,7 @@ export interface Releaser { prerelease: boolean | undefined; discussion_category_name: string | undefined; generate_release_notes: boolean | undefined; - make_latest: string | undefined; + make_latest: "true" | "false" | "legacy" | undefined; }): Promise<{ data: Release }>; allReleases(params: { @@ -93,8 +93,13 @@ export class GitHubReleaser implements Releaser { target_commitish: string | undefined; discussion_category_name: string | undefined; generate_release_notes: boolean | undefined; - make_latest: string | undefined; + make_latest: "true" | "false" | "legacy" | undefined; }): Promise<{ data: Release }> { + + if (typeof params.make_latest === 'string' && !["true", "false", "legacy"].includes(params.make_latest)) { + params.make_latest = undefined; + } + return this.github.rest.repos.createRelease(params); } @@ -110,8 +115,13 @@ export class GitHubReleaser implements Releaser { prerelease: boolean | undefined; discussion_category_name: string | undefined; generate_release_notes: boolean | undefined; - make_latest: string | undefined; + make_latest: "true" | "false" | "legacy" | undefined; }): Promise<{ data: Release }> { + + if (typeof params.make_latest === 'string' && !["true", "false", "legacy"].includes(params.make_latest)) { + params.make_latest = undefined; + } + return this.github.rest.repos.updateRelease(params); } diff --git a/src/util.ts b/src/util.ts index 5dce79f..b12a4d0 100644 --- a/src/util.ts +++ b/src/util.ts @@ -19,7 +19,7 @@ export interface Config { input_discussion_category_name?: string; input_generate_release_notes?: boolean; input_append_body?: boolean; - input_make_latest: string | undefined; + input_make_latest: "true" | "false" | "legacy" | undefined; } export const uploadUrl = (url: string): string => { @@ -71,12 +71,19 @@ export const parseConfig = (env: Env): Config => { env.INPUT_DISCUSSION_CATEGORY_NAME || undefined, input_generate_release_notes: env.INPUT_GENERATE_RELEASE_NOTES == "true", input_append_body: env.INPUT_APPEND_BODY == "true", - input_make_latest: env.INPUT_MAKE_LATEST - ? env.INPUT_MAKE_LATEST - : undefined, + input_make_latest: parseMakeLatest(env.INPUT_MAKE_LATEST), }; }; +const parseMakeLatest = ( + value: string | undefined +): "true" | "false" | "legacy" | undefined => { + if (value === "true" || value === "false" || value === "legacy") { + return value; + } + return undefined; +} + export const paths = (patterns: string[]): string[] => { return patterns.reduce((acc: string[], pattern: string): string[] => { return acc.concat(