forked from badges/shields
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcodeclimate-common.js
More file actions
45 lines (40 loc) · 1.18 KB
/
Copy pathcodeclimate-common.js
File metadata and controls
45 lines (40 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import Joi from 'joi'
import { NotFound } from '../index.js'
const keywords = ['codeclimate']
const isLetterGrade = Joi.equal('A', 'B', 'C', 'D', 'E', 'F').required()
const repoSchema = Joi.object({
data: Joi.array()
.max(1)
.items(
Joi.object({
id: Joi.string().required(),
relationships: Joi.object({
latest_default_branch_snapshot: Joi.object({
data: Joi.object({
id: Joi.string().required(),
}).allow(null),
}).required(),
latest_default_branch_test_report: Joi.object({
data: Joi.object({
id: Joi.string().required(),
}).allow(null),
}).required(),
}).required(),
})
)
.required(),
}).required()
async function fetchRepo(serviceInstance, { user, repo }) {
const {
data: [repoInfo],
} = await serviceInstance._requestJson({
schema: repoSchema,
url: 'https://api.codeclimate.com/v1/repos',
options: { qs: { github_slug: `${user}/${repo}` } },
})
if (repoInfo === undefined) {
throw new NotFound({ prettyMessage: 'repo not found' })
}
return repoInfo
}
export { keywords, isLetterGrade, fetchRepo }