'use strict'
const BaseSvgService = require('../base-svg-scraping')
const { fetch, render } = require('./azure-devops-helpers')
const documentation = `
To obtain your own badge, you need to get 4 pieces of information:
ORGANIZATION, PROJECT_ID, DEFINITION_ID and ENVIRONMENT_ID.
First, you need to enable badges for each required environments in the options of your release definition.
Once you have save the change, look at badge url:
Your badge will then have the form:
https://img.shields.io/vso/release/ORGANIZATION/PROJECT_ID/DEFINITION_ID/ENVIRONMENT_ID.svg.
`
module.exports = class AzureDevOpsRelease extends BaseSvgService {
static get category() {
return 'build'
}
static get route() {
return {
base: '',
format: '(?:azure-devops|vso)/release/([^/]+)/([^/]+)/([^/]+)/([^/]+)',
capture: ['organization', 'projectId', 'definitionId', 'environmentId'],
}
}
static get examples() {
return [
{
title: 'Azure DevOps releases',
pattern:
'azure-devops/release/:organization/:projectId/:definitionId/:environmentId',
staticExample: render({ status: 'succeeded' }),
exampleUrl:
'azure-devops/release/totodem/8cf3ec0e-d0c2-4fcd-8206-ad204f254a96/1/1',
keywords: ['vso'],
documentation,
},
]
}
static get defaultBadgeData() {
return {
label: 'deployment',
}
}
async handle({ organization, projectId, definitionId, environmentId }) {
// Microsoft documentation: ?
const props = await fetch(this, {
url: `https://vsrm.dev.azure.com/${organization}/_apis/public/Release/badge/${projectId}/${definitionId}/${environmentId}`,
errorMessages: {
400: 'project not found',
404: 'user or environment not found',
500: 'inaccessible or definition not found',
},
})
return render(props)
}
}