Files
shields/services/sonar/sonar-quality-gate.service.js
Caleb Cartwright ea865436a1 add [Sonar] badges for various test metrics (#3571)
* feat: add SonarTests badges

* chore: remove commented out line

* refactor: update SonarTestsSummary to override transform
2019-07-01 15:46:51 -05:00

76 lines
1.5 KiB
JavaScript

'use strict'
const SonarBase = require('./sonar-base')
const {
documentation,
keywords,
patternBase,
queryParamSchema,
} = require('./sonar-helpers')
module.exports = class SonarQualityGate extends SonarBase {
static get category() {
return 'analysis'
}
static get route() {
return {
base: 'sonar',
pattern: `${patternBase}/:metric(quality_gate|alert_status)`,
queryParamSchema,
}
}
static get examples() {
return [
{
title: 'Sonar Quality Gate',
namedParams: {
protocol: 'https',
host: 'sonarcloud.io',
component: 'swellaby:azdo-shellcheck',
metric: 'quality_gate',
},
queryParams: {
sonarVersion: '4.2',
},
staticPreview: this.render({ qualityState: 'OK' }),
keywords,
documentation,
},
]
}
static get defaultBadgeData() {
return { label: 'quality gate' }
}
static render({ qualityState }) {
if (qualityState === 'OK') {
return {
message: 'passed',
color: 'success',
}
}
return {
message: 'failed',
color: 'critical',
}
}
async handle({ protocol, host, component }, { sonarVersion }) {
const json = await this.fetch({
sonarVersion,
protocol,
host,
component,
metricName: 'alert_status',
})
const { alert_status: qualityState } = this.transform({
json,
sonarVersion,
})
return this.constructor.render({ qualityState })
}
}