43 lines
1.5 KiB
JavaScript
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)
|
|
}
|
|
|
|
}
|