summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/script
diff options
context:
space:
mode:
authorDavid Hill <[email protected]>2025-11-10 13:44:12 +0000
committerDavid Hill <[email protected]>2025-11-10 13:44:12 +0000
commitc6e830c954418808dc39284a1c073aa63a6d4d21 (patch)
tree9c3052e0509115188768a553c0be5a8441ebdd96 /packages/console/app/script
parent7088bfabd773e2f076aab1c9d2468c04feff0570 (diff)
parentfc78c28df64383a9f99382093f61fc28caf6569f (diff)
downloadopencode-c6e830c954418808dc39284a1c073aa63a6d4d21.tar.gz
opencode-c6e830c954418808dc39284a1c073aa63a6d4d21.zip
Merge branch 'dev' of https://github.com/sst/opencode into dev
Diffstat (limited to 'packages/console/app/script')
-rwxr-xr-xpackages/console/app/script/generate-sitemap.ts103
1 files changed, 103 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..6cbffcb85
--- /dev/null
+++ b/packages/console/app/script/generate-sitemap.ts
@@ -0,0 +1,103 @@
+#!/usr/bin/env bun
+import { readdir, writeFile } from "fs/promises"
+import { join, dirname } from "path"
+import { fileURLToPath } from "url"
+import { config } from "../src/config.js"
+
+const __dirname = dirname(fileURLToPath(import.meta.url))
+const BASE_URL = config.baseUrl
+const PUBLIC_DIR = join(__dirname, "../public")
+const ROUTES_DIR = join(__dirname, "../src/routes")
+const DOCS_DIR = join(__dirname, "../../../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 writeFile(outputPath, xml, "utf-8")
+
+ console.log(`✓ Sitemap generated at ${outputPath}`)
+}
+
+main()