gitea-bot/src/hooks/issueBranchName.js

43 lines
1.5 KiB
JavaScript

const gitea = require('../gitea-api')
const log = (msg) => {
console.log('[issueBranchName]', msg)
}
module.exports = {
exec: (req) => {
if(req.headers['x-gitea-event'] !== 'issues') {
return
}
const { issue, repository } = req.body
const isBug = issue.labels.length && !!issue.labels.find(label => label.name.includes('bug'))
const typePrefix = issue.labels.length && issue.labels.find(label => label.startsWith('type'))
console.log(`Found type prefix`, typePrefix)
const prefix = (typePrefix ? typePrefix : isBug ? 'bugfix' : 'feature').replaceAll(/[^a-z0-9\s]/gi, '')
console.log(`Create branch prefix`, prefix)
const branch = issue.title.replace(/[^a-z0-9\s]/gi, '')
.replaceAll(' ', '-')
.toLowerCase()
const branchName = `${prefix}/ISS-${issue.number}-${branch}`
log(`Created branch name ${branchName} in ${repository.full_name}`)
issue.body = issue.body || ''
let body
if(issue.body.includes('> <code>')) {
body = issue.body.replaceAll(/> <code>.+<\/code>/g, `> <code>${branchName}</code>`)
}else {
body = issue.body
body += '\n\n'
body += `> <code>${branchName}</code>`
}
const path = `/repos/${repository.full_name}/issues/${issue.number}`
return gitea.patch(path, { body })
.then(() => {})
.catch(reason => reason)
}
}