@ammar-ahmed/automation-app-bot
Version:
Automation made easy and fun OH Yeah!
67 lines (61 loc) • 1.78 kB
JavaScript
const { Validator } = require('./validator')
const deepValidation = require('./options_processor/deepValidation')
class Milestone extends Validator {
constructor () {
super('milestone')
this.supportedEvents = [
'pull_request.*',
'pull_request_review.*',
'issues.*'
]
this.supportedSettings = {
no_empty: {
enabled: 'boolean',
message: 'string'
},
jira: {
regex: 'string',
regex_flag: 'string',
message: 'string'
},
must_include: {
regex: ['string', 'array'],
regex_flag: 'string',
message: 'string'
},
must_exclude: {
regex: ['string', 'array'],
regex_flag: 'string',
message: 'string'
},
begins_with: {
match: ['string', 'array'],
message: 'string'
},
ends_with: {
match: ['string', 'array'],
message: 'string'
}
}
}
async validate (context, validationSettings) {
const milestone = this.getPayload(context).milestone ? this.getPayload(context).milestone.title : ''
let output = await this.processOptions(
validationSettings,
milestone
)
// check PR body to see if closes an issue
if (output.status === 'fail') {
const res = deepValidation.checkIfClosesAnIssue(this.getPayload(context).body)
if (res.length > 0) {
const result = await deepValidation.checkIfIssueHaveProperty(context, res, 'milestone')
result.forEach(issue => {
const processed = this.processOptions(validationSettings, issue.title)
output = processed
})
}
}
return output
}
}
module.exports = Milestone