Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { mkdirp, writeFile } from "fs-extra"
import path from "path"
import { ExplorerProgram } from "../explorer/ExplorerProgram"
import { explorerUrlMigrationsById } from "../explorer/urlMigrations/ExplorerUrlMigrations"
import { ExplorerAdminServer } from "../explorerAdminServer/ExplorerAdminServer"
import { explorerRedirectTable } from "../explorerAdminServer/ExplorerRedirects"
import { renderExplorerPage } from "./siteRenderers"
export const bakeAllPublishedExplorers = async (
outputFolder: string,
explorerAdminServer: ExplorerAdminServer
) => {
const published = await explorerAdminServer.getAllPublishedExplorers()
await bakeExplorersToDir(outputFolder, published)
}
const bakeExplorersToDir = async (
directory: string,
explorers: ExplorerProgram[] = []
) => {
for (const explorer of explorers) {
await write(
`${directory}/${explorer.slug}.html`,
await renderExplorerPage(explorer)
)
}
}
export const bakeAllExplorerRedirects = async (
outputFolder: string,
explorerAdminServer: ExplorerAdminServer
) => {
const explorers = await explorerAdminServer.getAllExplorers()
const redirects = explorerRedirectTable.rows
for (const redirect of redirects) {
const { migrationId, path: redirectPath, baseQueryStr } = redirect
const transform = explorerUrlMigrationsById[migrationId]
if (!transform) {
throw new Error(
`No explorer URL migration with id '${migrationId}'. Fix the list of explorer redirects and retry.`
)
}
const { explorerSlug } = transform
const program = explorers.find(
(program) => program.slug === explorerSlug
)
if (!program) {
throw new Error(
`No explorer with slug '${explorerSlug}'. Fix the list of explorer redirects and retry.`
)
}
const html = await renderExplorerPage(program, {
explorerUrlMigrationId: migrationId,
baseQueryStr,
})
await write(path.join(outputFolder, `${redirectPath}.html`), html)
}
}
// todo: merge with SiteBaker's?
const write = async (outPath: string, content: string) => {
await mkdirp(path.dirname(outPath))
await writeFile(outPath, content)
console.log(outPath)
}
|