1
0
mirror of synced 2026-01-05 03:06:35 -05:00

automate github apps docs (#35530)

Co-authored-by: Sarah Edwards <skedwards88@github.com>
This commit is contained in:
Rachael Sewell
2023-06-16 12:23:05 -07:00
committed by GitHub
parent b0ea5f518f
commit cb37f22ef0
89 changed files with 224473 additions and 21362 deletions

View File

@@ -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"

View File

@@ -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 }
}