4320041ed3
* Add support for signed commits (#3055) * formatting * fix eslint and lint errors * shift setting the base to before the push * sign commits by default for testing * add debug lines * read to buffer not string and use non-legacy method to base64 * debug payload without contents * disable linter for debug code * fix filepath when using path input * try to fix head repo * remove commented code * Try refactor of file changes * add tests for building file changes * add build file changes test for binary files * refactor graphql code into github helper class * build file changes even when there is no diff * add function to get commit detail * fix format * build branch commits * use source mode for deleted files * try rest api route * fix check for branch existence * force push * try fix base tree * debug commit verification * debug commit verification * fix format and cleanup * add executable mode file to test * limit blob creation concurrency * only build commits when feature enabled * remove unused code * update readme link * update docs for commit signing * fix capital letter * update docs * add throttling * set default back to false * output head sha and verified status * log outputs * fix head sha output * default the operation output to none * output retryafter for secondary rate limit * use separate client for branch and pull operations * add maintainer-can-modify input * rename git-token to branch-token * fix branch token input * remove deprecated env output * update docs * fix doc * update docs * build branch commits when there is a diff with the base * check verification status of head commit when not known * fix verified output when no commit signing is being used * draft always-true * convert to draft on branch updates when there is a diff with base * update docs with blob size limit * catch errors during blob creation for debugging * parse empty commits * pass base commit to push signed commits * use parent commit details in create commit * use parent tree for base_tree * multipart tree creation * update docs * update readme about the permissions of the default token * fix edge case where changes are partially merged * add updating documentation * fix typo * update major version --------- Co-authored-by: Ravi <1299606+rustycl0ck@users.noreply.github.com>
71 lines
2.5 KiB
TypeScript
71 lines
2.5 KiB
TypeScript
import * as core from '@actions/core'
|
|
import {Inputs, createPullRequest} from './create-pull-request'
|
|
import {inspect} from 'util'
|
|
import * as utils from './utils'
|
|
|
|
function getDraftInput(): {value: boolean; always: boolean} {
|
|
if (core.getInput('draft') === 'always-true') {
|
|
return {value: true, always: true}
|
|
} else {
|
|
return {value: core.getBooleanInput('draft'), always: false}
|
|
}
|
|
}
|
|
|
|
async function run(): Promise<void> {
|
|
try {
|
|
const inputs: Inputs = {
|
|
token: core.getInput('token'),
|
|
branchToken: core.getInput('branch-token'),
|
|
path: core.getInput('path'),
|
|
addPaths: utils.getInputAsArray('add-paths'),
|
|
commitMessage: core.getInput('commit-message'),
|
|
committer: core.getInput('committer'),
|
|
author: core.getInput('author'),
|
|
signoff: core.getBooleanInput('signoff'),
|
|
branch: core.getInput('branch'),
|
|
deleteBranch: core.getBooleanInput('delete-branch'),
|
|
branchSuffix: core.getInput('branch-suffix'),
|
|
base: core.getInput('base'),
|
|
pushToFork: core.getInput('push-to-fork'),
|
|
signCommits: core.getBooleanInput('sign-commits'),
|
|
title: core.getInput('title'),
|
|
body: core.getInput('body'),
|
|
bodyPath: core.getInput('body-path'),
|
|
labels: utils.getInputAsArray('labels'),
|
|
assignees: utils.getInputAsArray('assignees'),
|
|
reviewers: utils.getInputAsArray('reviewers'),
|
|
teamReviewers: utils.getInputAsArray('team-reviewers'),
|
|
milestone: Number(core.getInput('milestone')),
|
|
draft: getDraftInput(),
|
|
maintainerCanModify: core.getBooleanInput('maintainer-can-modify')
|
|
}
|
|
core.debug(`Inputs: ${inspect(inputs)}`)
|
|
|
|
if (!inputs.token) {
|
|
throw new Error(`Input 'token' not supplied. Unable to continue.`)
|
|
}
|
|
if (!inputs.branchToken) {
|
|
inputs.branchToken = inputs.token
|
|
}
|
|
if (inputs.bodyPath) {
|
|
if (!utils.fileExistsSync(inputs.bodyPath)) {
|
|
throw new Error(`File '${inputs.bodyPath}' does not exist.`)
|
|
}
|
|
// Update the body input with the contents of the file
|
|
inputs.body = utils.readFile(inputs.bodyPath)
|
|
}
|
|
// 65536 characters is the maximum allowed for the pull request body.
|
|
if (inputs.body.length > 65536) {
|
|
core.warning(
|
|
`Pull request body is too long. Truncating to 65536 characters.`
|
|
)
|
|
inputs.body = inputs.body.substring(0, 65536)
|
|
}
|
|
|
|
await createPullRequest(inputs)
|
|
} catch (error) {
|
|
core.setFailed(utils.getErrorMessage(error))
|
|
}
|
|
}
|
|
|
|
run()
|