Files
metabuilder/codegen/scripts/list-pages.js
johndoe6345789 a51130a127 feat: Add external low-code and postgres repositories
- codegen: Low-code React app with JSON-driven component system
- packagerepo: Schema-driven package repository with backend/frontend
- postgres: Next.js app with Drizzle ORM and PostgreSQL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 16:48:52 +00:00

88 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
/**
* Page List Script
*
* Lists all pages defined in pages.json with their configuration.
*
* Usage:
* node scripts/list-pages.js [--format=table|json]
*/
const fs = require('fs')
const path = require('path')
const pagesJsonPath = path.join(process.cwd(), 'src', 'config', 'pages.json')
if (!fs.existsSync(pagesJsonPath)) {
console.error('❌ Could not find src/config/pages.json')
process.exit(1)
}
const pagesConfig = JSON.parse(fs.readFileSync(pagesJsonPath, 'utf8'))
const format = process.argv.find(arg => arg.startsWith('--format='))?.split('=')[1] || 'table'
if (format === 'json') {
console.log(JSON.stringify(pagesConfig.pages, null, 2))
process.exit(0)
}
console.log('\n📋 CodeForge Pages Configuration\n')
console.log('═══════════════════════════════════════════════════════════════════════════\n')
const sortedPages = [...pagesConfig.pages].sort((a, b) => a.order - b.order)
sortedPages.forEach((page, index) => {
const enabled = page.enabled ? '✅' : '❌'
const hasToggle = page.toggleKey ? `🎚️ ${page.toggleKey}` : ''
const hasShortcut = page.shortcut ? `⌨️ ${page.shortcut}` : ''
console.log(`${String(index + 1).padStart(2, '0')}. ${page.title}`)
console.log(` ID: ${page.id}`)
console.log(` Component: ${page.component}`)
console.log(` Icon: ${page.icon}`)
console.log(` Enabled: ${enabled}`)
console.log(` Toggle: ${hasToggle}`)
console.log(` Shortcut: ${hasShortcut}`)
console.log(` Order: ${page.order}`)
if (page.requiresResizable) {
console.log(` Layout: Resizable Split-Pane`)
}
console.log('')
})
console.log('═══════════════════════════════════════════════════════════════════════════')
console.log(`\nTotal Pages: ${pagesConfig.pages.length}`)
console.log(`Enabled: ${pagesConfig.pages.filter(p => p.enabled).length}`)
console.log(`With Shortcuts: ${pagesConfig.pages.filter(p => p.shortcut).length}`)
console.log(`With Feature Toggles: ${pagesConfig.pages.filter(p => p.toggleKey).length}`)
console.log('')
const shortcuts = sortedPages
.filter(p => p.shortcut && p.enabled)
.map(p => ` ${p.shortcut.padEnd(12)}${p.title}`)
if (shortcuts.length > 0) {
console.log('\n⌨ Keyboard Shortcuts\n')
console.log('───────────────────────────────────────────────────────────────────────────')
shortcuts.forEach(s => console.log(s))
console.log('')
}
const featureToggles = sortedPages
.filter(p => p.toggleKey && p.enabled)
.map(p => ` ${p.toggleKey.padEnd(20)}${p.title}`)
if (featureToggles.length > 0) {
console.log('\n🎚 Feature Toggles\n')
console.log('───────────────────────────────────────────────────────────────────────────')
featureToggles.forEach(t => console.log(t))
console.log('')
}
console.log('\n💡 Tips:')
console.log(' • Edit src/config/pages.json to add/modify pages')
console.log(' • Run with --format=json for JSON output')
console.log(' • See DECLARATIVE_SYSTEM.md for full documentation')
console.log('')