summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/script
diff options
context:
space:
mode:
authorJay V <[email protected]>2025-11-07 18:35:08 -0500
committerJay V <[email protected]>2025-11-07 19:51:46 -0500
commit1d43b4e6d7df7b832c4d2214ba0b99973ff09cd0 (patch)
treeecb317f959c5f5175faad5e990f122b78cdb2f74 /packages/console/app/script
parent8cef7940fed5f12cee55a54b7c4c9c0ff1b1a322 (diff)
downloadopencode-1d43b4e6d7df7b832c4d2214ba0b99973ff09cd0.tar.gz
opencode-1d43b4e6d7df7b832c4d2214ba0b99973ff09cd0.zip
ignore: docs: add automated sitemap generation for main app and docs routes
Diffstat (limited to 'packages/console/app/script')
-rwxr-xr-xpackages/console/app/script/generate-sitemap.ts101
1 files changed, 101 insertions, 0 deletions
diff --git a/packages/console/app/script/generate-sitemap.ts b/packages/console/app/script/generate-sitemap.ts
new file mode 100755
index 000000000..2b003ae20
--- /dev/null
+++ b/packages/console/app/script/generate-sitemap.ts
@@ -0,0 +1,101 @@
+#!/usr/bin/env bun
+import { readdir } from "fs/promises"
+import { join } from "path"
+import { config } from "../src/config.ts"
+
+const BASE_URL = config.baseUrl
+const PUBLIC_DIR = join(import.meta.dir, "../public")
+const ROUTES_DIR = join(import.meta.dir, "../src/routes")
+const DOCS_DIR = join(import.meta.dir, "../../../web/src/content/docs")
+
+interface SitemapEntry {
+ url: string
+ priority: number
+ changefreq: string
+}
+
+async function getMainRoutes(): Promise<SitemapEntry[]> {
+ const routes: SitemapEntry[] = []
+
+ // Add main static routes
+ const staticRoutes = [
+ { path: "/", priority: 1.0, changefreq: "daily" },
+ { path: "/enterprise", priority: 0.8, changefreq: "weekly" },
+ { path: "/brand", priority: 0.6, changefreq: "monthly" },
+ { path: "/zen", priority: 0.8, changefreq: "weekly" },
+ ]
+
+ for (const route of staticRoutes) {
+ routes.push({
+ url: `${BASE_URL}${route.path}`,
+ priority: route.priority,
+ changefreq: route.changefreq,
+ })
+ }
+
+ return routes
+}
+
+async function getDocsRoutes(): Promise<SitemapEntry[]> {
+ const routes: SitemapEntry[] = []
+
+ try {
+ const files = await readdir(DOCS_DIR)
+
+ for (const file of files) {
+ if (!file.endsWith(".mdx")) continue
+
+ const slug = file.replace(".mdx", "")
+ const path = slug === "index" ? "/docs/" : `/docs/${slug}`
+
+ routes.push({
+ url: `${BASE_URL}${path}`,
+ priority: slug === "index" ? 0.9 : 0.7,
+ changefreq: "weekly",
+ })
+ }
+ } catch (error) {
+ console.error("Error reading docs directory:", error)
+ }
+
+ return routes
+}
+
+function generateSitemapXML(entries: SitemapEntry[]): string {
+ const urls = entries
+ .map(
+ (entry) => ` <url>
+ <loc>${entry.url}</loc>
+ <changefreq>${entry.changefreq}</changefreq>
+ <priority>${entry.priority}</priority>
+ </url>`
+ )
+ .join("\n")
+
+ return `<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+${urls}
+</urlset>`
+}
+
+async function main() {
+ console.log("Generating sitemap...")
+
+ const mainRoutes = await getMainRoutes()
+ const docsRoutes = await getDocsRoutes()
+
+ const allRoutes = [...mainRoutes, ...docsRoutes]
+
+ console.log(`Found ${mainRoutes.length} main routes`)
+ console.log(`Found ${docsRoutes.length} docs routes`)
+ console.log(`Total: ${allRoutes.length} routes`)
+
+ const xml = generateSitemapXML(allRoutes)
+
+ const outputPath = join(PUBLIC_DIR, "sitemap.xml")
+ await Bun.write(outputPath, xml)
+
+ console.log(`✓ Sitemap generated at ${outputPath}`)
+}
+
+main()