1
0
mirror of https://github.com/badges/shields.git synced 2025-04-18 19:44:04 +03:00

sort categories by title (except core) (#9888)

This commit is contained in:
chris48s 2024-01-13 18:24:18 +00:00 committed by GitHub
parent 4a55c3eaa4
commit dc84d09732
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 10 deletions

View File

@ -198,7 +198,13 @@ function addGlobalProperties(endpoints) {
return paths
}
function services2openapi(services) {
function sortPaths(obj) {
const entries = Object.entries(obj)
entries.sort((a, b) => a[1].get.summary.localeCompare(b[1].get.summary))
return Object.fromEntries(entries)
}
function services2openapi(services, sort) {
const paths = {}
for (const service of services) {
if (service.openApi) {
@ -221,10 +227,10 @@ function services2openapi(services) {
}
}
}
return paths
return sort ? sortPaths(paths) : paths
}
function category2openapi(category, services) {
function category2openapi({ category, services, sort = false }) {
const spec = {
openapi: '3.0.0',
info: {
@ -334,7 +340,7 @@ function category2openapi(category, services) {
},
},
},
paths: services2openapi(services),
paths: services2openapi(services, sort),
}
return spec

View File

@ -377,10 +377,13 @@ describe('category2openapi', function () {
it('generates an Open API spec', function () {
expect(
clean(
category2openapi({ name: 'build' }, [
OpenApiService.getDefinition(),
LegacyService.getDefinition(),
]),
category2openapi({
category: { name: 'build' },
services: [
OpenApiService.getDefinition(),
LegacyService.getDefinition(),
],
}),
),
).to.deep.equal(expected)
})

View File

@ -27,7 +27,7 @@ function writeSpec(filename, spec) {
writeSpec(
path.join(specsPath, `${category.id}.yaml`),
category2openapi(category, services),
category2openapi({ category, services, sort: true }),
)
}
@ -44,6 +44,10 @@ function writeSpec(filename, spec) {
)
writeSpec(
path.join(specsPath, '1core.yaml'),
category2openapi({ name: 'Core' }, coreServices),
category2openapi({
category: { name: 'Core' },
services: coreServices,
sort: false,
}),
)
})()