marocchino-sticky-pull-requ.../src/config.ts
Ross Williams 7cb1e16d25
Some checks are pending
Test / test (push) Waiting to run
Add number_force that overrides pull_request number (#1652)
* Add number_force that overrides pull_request event

* Add number_force input and tests for PR #1652

Co-authored-by: marocchino <128431+marocchino@users.noreply.github.com>

* Delete pullRequestNumber.test.ts; simplify config.test.ts

Co-authored-by: marocchino <128431+marocchino@users.noreply.github.com>

* Rewrite config.test.ts to test real src/config.ts code, not a mock of it

Co-authored-by: marocchino <128431+marocchino@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: marocchino <128431+marocchino@users.noreply.github.com>
2026-03-13 21:46:05 +09:00

69 lines
2.4 KiB
TypeScript

import {readFileSync} from "node:fs"
import * as core from "@actions/core"
import {context} from "@actions/github"
import {create} from "@actions/glob"
import type {ReportedContentClassifiers} from "@octokit/graphql-schema"
export const pullRequestNumber =
+core.getInput("number_force", {required: false}) ||
context?.payload?.pull_request?.number ||
+core.getInput("number", {required: false})
export const repo = buildRepo()
export const header = core.getInput("header", {required: false})
export const append = core.getBooleanInput("append", {required: true})
export const hideDetails = core.getBooleanInput("hide_details", {
required: true,
})
export const recreate = core.getBooleanInput("recreate", {required: true})
export const hideAndRecreate = core.getBooleanInput("hide_and_recreate", {
required: true,
})
export const hideClassify = core.getInput("hide_classify", {
required: true,
}) as ReportedContentClassifiers
export const deleteOldComment = core.getBooleanInput("delete", {required: true})
export const onlyCreateComment = core.getBooleanInput("only_create", {
required: true,
})
export const onlyUpdateComment = core.getBooleanInput("only_update", {
required: true,
})
export const skipUnchanged = core.getBooleanInput("skip_unchanged", {
required: true,
})
export const hideOldComment = core.getBooleanInput("hide", {required: true})
export const githubToken = core.getInput("GITHUB_TOKEN", {required: true})
export const ignoreEmpty = core.getBooleanInput("ignore_empty", {
required: true,
})
function buildRepo(): {repo: string; owner: string} {
return {
owner: core.getInput("owner", {required: false}) || context.repo.owner,
repo: core.getInput("repo", {required: false}) || context.repo.repo,
}
}
export async function getBody(): Promise<string> {
const pathInput = core.getMultilineInput("path", {required: false})
const followSymbolicLinks = core.getBooleanInput("follow_symbolic_links", {
required: true,
})
if (pathInput && pathInput.length > 0) {
try {
const globber = await create(pathInput.join("\n"), {
followSymbolicLinks,
matchDirectories: false,
})
return (await globber.glob()).map(path => readFileSync(path, "utf-8")).join("\n")
} catch (error) {
if (error instanceof Error) {
core.setFailed(error.message)
}
return ""
}
} else {
return core.getInput("message", {required: false})
}
}