automate github apps docs (#35530)
Co-authored-by: Sarah Edwards <skedwards88@github.com>
This commit is contained in:
@@ -1,4 +1,57 @@
|
||||
{
|
||||
"targetDirectory": "content/rest/overview",
|
||||
"pages": {
|
||||
"server-to-server-rest": {
|
||||
"frontmatterDefaults": {
|
||||
"versions": {
|
||||
"fpt": "*",
|
||||
"ghae": "*",
|
||||
"ghec": "*",
|
||||
"ghes": "*"
|
||||
},
|
||||
"autogenerated": "github-apps"
|
||||
},
|
||||
"targetFilename": "content/rest/overview/endpoints-available-for-github-app-installation-access-tokens.md"
|
||||
},
|
||||
"user-to-server-rest": {
|
||||
"frontmatterDefaults": {
|
||||
"versions": {
|
||||
"fpt": "*",
|
||||
"ghae": "*",
|
||||
"ghec": "*",
|
||||
"ghes": "*"
|
||||
},
|
||||
"autogenerated": "github-apps"
|
||||
},
|
||||
"targetFilename": "content/rest/overview/endpoints-available-for-github-app-user-access-tokens.md"
|
||||
},
|
||||
"server-to-server-permissions": {
|
||||
"frontmatterDefaults": {
|
||||
"versions": {
|
||||
"fpt": "*",
|
||||
"ghae": "*",
|
||||
"ghec": "*",
|
||||
"ghes": "*"
|
||||
},
|
||||
"autogenerated": "github-apps"
|
||||
},
|
||||
"targetFilename": "content/rest/overview/permissions-required-for-github-apps.md"
|
||||
},
|
||||
"fine-grained-pat": {
|
||||
"frontmatterDefaults": {
|
||||
"versions": "data/features/pat-v2.yml",
|
||||
"autogenerated": "github-apps"
|
||||
},
|
||||
"targetFilename": "content/rest/overview/endpoints-available-for-fine-grained-personal-access-tokens.md"
|
||||
},
|
||||
"fine-grained-pat-permissions": {
|
||||
"frontmatterDefaults": {
|
||||
"versions": "data/features/pat-v2.yml",
|
||||
"autogenerated": "github-apps"
|
||||
},
|
||||
"targetFilename": "content/rest/overview/permissions-required-for-fine-grained-personal-access-tokens.md"
|
||||
}
|
||||
},
|
||||
"api-versions": {
|
||||
"fpt": [
|
||||
"2022-11-28"
|
||||
|
||||
@@ -1,22 +1,55 @@
|
||||
import path from 'path'
|
||||
import { readFile } from 'fs/promises'
|
||||
|
||||
import { readCompressedJsonFileFallback } from '../../../lib/read-json-file.js'
|
||||
import { getOpenApiVersion } from '../../../lib/all-versions.js'
|
||||
import { categoriesWithoutSubcategories } from '../../rest/lib/index.js'
|
||||
|
||||
export const ENABLED_APPS_DIR = 'src/github-apps/data'
|
||||
export const ENABLED_APPS_FILENAME = 'server-to-server-rest.json'
|
||||
const ENABLED_APPS_DIR = 'src/github-apps/data'
|
||||
const githubAppsData = new Map()
|
||||
|
||||
const enabledForApps = new Map()
|
||||
// Initialize the Map with the page type keys listed under `pages`
|
||||
// in the config.json file.
|
||||
const appsDataConfig = JSON.parse(await readFile('src/github-apps/lib/config.json', 'utf8'))
|
||||
for (const pageType of Object.keys(appsDataConfig.pages)) {
|
||||
githubAppsData.set(pageType, new Map())
|
||||
}
|
||||
|
||||
export async function getEnabledForApps(docsVersion, apiVersion) {
|
||||
export async function getAppsData(pageType, docsVersion, apiVersion) {
|
||||
const pageTypeMap = githubAppsData.get(pageType)
|
||||
const filename = `${pageType}.json`
|
||||
const openApiVersion = getOpenApiVersion(docsVersion) + (apiVersion ? `-${apiVersion}` : '')
|
||||
if (!enabledForApps.has(openApiVersion)) {
|
||||
if (!pageTypeMap.has(openApiVersion)) {
|
||||
// The `readCompressedJsonFileFallback()` function
|
||||
// will check for both a .br and .json extension.
|
||||
const appDataPath = path.join(ENABLED_APPS_DIR, openApiVersion, ENABLED_APPS_FILENAME)
|
||||
const appDataPath = path.join(ENABLED_APPS_DIR, openApiVersion, filename)
|
||||
const data = readCompressedJsonFileFallback(appDataPath)
|
||||
enabledForApps.set(openApiVersion, data)
|
||||
pageTypeMap.set(openApiVersion, data)
|
||||
}
|
||||
|
||||
return enabledForApps.get(openApiVersion)
|
||||
return pageTypeMap.get(openApiVersion)
|
||||
}
|
||||
|
||||
export async function getAppsServerSideProps(context, pageType, { useDisplayTitle = false }) {
|
||||
const { getAutomatedPageMiniTocItems } = await import('lib/get-mini-toc-items')
|
||||
const { getAutomatedPageContextFromRequest } = await import(
|
||||
'src/automated-pipelines/components/AutomatedPageContext'
|
||||
)
|
||||
const currentVersion = context.query.versionId
|
||||
const allVersions = context.req.context.allVersions
|
||||
const queryApiVersion = context.query.apiVersion
|
||||
const apiVersion = allVersions[currentVersion].apiVersions.includes(queryApiVersion)
|
||||
? queryApiVersion
|
||||
: allVersions[currentVersion].latestApiVersion
|
||||
|
||||
const appsItems = await getAppsData(pageType, currentVersion, apiVersion)
|
||||
// Create minitoc
|
||||
const { miniTocItems } = getAutomatedPageContextFromRequest(context.req)
|
||||
const titles = useDisplayTitle
|
||||
? Object.values(appsItems).map((item) => item.displayTitle)
|
||||
: Object.keys(appsItems)
|
||||
const appMiniToc = await getAutomatedPageMiniTocItems(titles, context)
|
||||
appMiniToc && miniTocItems.push(...appMiniToc)
|
||||
|
||||
return { currentVersion, appsItems, categoriesWithoutSubcategories }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user