refactor: several improvements (#262)

- more tests
- file read in config
- reduce if depth
- reduce unnecessary requests
This commit is contained in:
marocchino 2021-03-27 12:13:51 +09:00 committed by GitHub
parent cc76ed82aa
commit 322a2451da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 234 additions and 109 deletions

View file

@ -9,15 +9,13 @@ import {
import {
pullRequestNumber,
repo,
message,
path,
body,
header,
append,
recreate,
deleteOldComment,
githubToken
} from './config'
import {readFileSync} from 'fs'
async function run(): Promise<undefined> {
if (isNaN(pullRequestNumber) || pullRequestNumber < 1) {
@ -26,6 +24,14 @@ async function run(): Promise<undefined> {
}
try {
if (!deleteOldComment && !body) {
throw new Error('Either message or path input is required')
}
if (deleteOldComment && recreate) {
throw new Error('delete and recreate cannot be both set to true')
}
const octokit = github.getOctokit(githubToken)
const previous = await findPreviousComment(
octokit,
@ -34,49 +40,31 @@ async function run(): Promise<undefined> {
header
)
if (!deleteOldComment && !message && !path) {
throw new Error('Either message or path input is required')
}
if (deleteOldComment && recreate) {
throw new Error('delete and recreate cannot be both set to true')
}
let body
if (path) {
body = readFileSync(path, 'utf-8')
} else {
body = message
}
if (previous) {
const previousBody = append ? previous.body : undefined
if (deleteOldComment) {
await deleteComment(octokit, repo, previous.id)
} else if (recreate) {
await deleteComment(octokit, repo, previous.id)
await createComment(
octokit,
repo,
pullRequestNumber,
body,
header,
previousBody
)
} else {
await updateComment(
octokit,
repo,
previous.id,
body,
header,
previousBody
)
}
} else {
if (!previous) {
await createComment(octokit, repo, pullRequestNumber, body, header)
return
}
if (deleteOldComment) {
await deleteComment(octokit, repo, previous.id)
return
}
const previousBody = append ? previous.body : undefined
if (recreate) {
await deleteComment(octokit, repo, previous.id)
await createComment(
octokit,
repo,
pullRequestNumber,
body,
header,
previousBody
)
return
}
await updateComment(octokit, repo, previous.id, body, header, previousBody)
} catch (error) {
core.setFailed(error.message)
}