Files
github/entrypoint.js
Jonathan Clem 4f0213ed10 Initial commit
2019-03-29 15:32:31 -07:00

98 lines
2.3 KiB
JavaScript

const {Toolkit} = require('actions-toolkit')
const tools = new Toolkit()
const commands = {
assign: doAssign,
comment: doComment,
label: doLabel
}
const command = tools.arguments._[0]
if (process.env.DEBUG === 'true') debug()
commands[command](tools.arguments)
.then(() => {
tools.exit.success('action successful')
})
.catch(err => {
tools.log.fatal(err)
tools.exit.failure('action failed')
})
/**
* Apply an assignee to the issue in this action.
*
* ex. `args = 'assign @jclem'`
*/
async function doAssign() {
filterAction(tools.arguments.action)
const assignees = tools.arguments._.slice(1)
tools.log.info('assign', assignees)
return checkStatus(
await tools.github.issues.addAssignees(tools.context.issue({assignees}))
)
}
/**
* Create a new comment on the issue in this action.
*
* ex. `args = 'comment Hello, world!'`
*/
async function doComment() {
filterAction(tools.arguments.action)
const body = tools.arguments._.slice(1).join(' ')
tools.log.info('comment', body)
return checkStatus(
await tools.github.issues.createComment(tools.context.issue({body}))
)
}
/**
* Apply a label to the issue in this action.
*
* ex. `args = 'label bug'`
*/
async function doLabel() {
filterAction(tools.arguments.action)
const labels = tools.arguments._.slice(1)
tools.log.info('label', labels)
return checkStatus(
await tools.github.issues.addLabels(tools.context.issue({labels}))
)
}
function checkStatus(result) {
if (result.status >= 200 && result.status < 300) {
return result
}
tools.exit.failure(`Received status ${result.status} from API.`)
}
function filterAction(action) {
if (!action) return
if (tools.context.payload.action !== action) {
tools.log.note(
`Action "${
tools.context.payload.action
} does not match "${action}" from arguments.`
)
tools.exit.neutral()
}
}
function debug() {
tools.log.debug('Action', tools.context.action)
tools.log.debug('Actor', tools.context.actor)
tools.log.debug('Arguments', tools.arguments)
tools.log.debug('Event', tools.context.event)
tools.log.debug('Ref', tools.context.ref)
tools.log.debug('Sha', tools.context.sha)
tools.log.debug('Workflow', tools.context.workflow)
if (process.env.DEBUG_PAYLOAD === 'true')
tools.log.debug('Payload', tools.context.payload)
}