mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 17:37:40 +00:00
* refactor(workspace-layout): organize concrete domain owners * test(layout): retire obsolete legacy-leaf publication setup
51 lines
1.9 KiB
JavaScript
51 lines
1.9 KiB
JavaScript
#!/usr/bin/env node
|
|
// Validate saved layout against shared structural rules, including live dev profiles; print breaches and exit 1.
|
|
// Usage: node config/scripts/check-workspace-layout-rules.mjs <userDataDir>
|
|
|
|
import { build } from 'esbuild'
|
|
import { mkdir, mkdtemp, rm } from 'node:fs/promises'
|
|
import { createRequire } from 'node:module'
|
|
import { join, resolve } from 'node:path'
|
|
|
|
const userDataDir = process.argv[2]
|
|
if (!userDataDir) {
|
|
console.error('usage: check-workspace-layout-rules.mjs <userDataDir>')
|
|
process.exit(2)
|
|
}
|
|
|
|
const root = resolve(import.meta.dirname, '../../..', '..')
|
|
await mkdir(join(root, '.tmp'), { recursive: true })
|
|
const scratch = await mkdtemp(join(root, '.tmp', 'layout-rules-'))
|
|
try {
|
|
const outfile = join(scratch, 'check.cjs')
|
|
await build({
|
|
stdin: {
|
|
contents: `
|
|
export { readPersistedProfileState } from './tests/e2e/helpers/persisted-profile-state'
|
|
export { partitionsFromProfileRoot } from './tests/e2e/helpers/workspace-layout-oracle-views'
|
|
export { checkWorkspaceLayoutRules } from './src/shared/workspace-layout/invariants/workspace-layout-rules'
|
|
`,
|
|
resolveDir: root,
|
|
loader: 'ts'
|
|
},
|
|
bundle: true,
|
|
platform: 'node',
|
|
format: 'cjs',
|
|
outfile,
|
|
external: ['electron', '@stablyai/playwright-test'],
|
|
logLevel: 'silent'
|
|
})
|
|
const { readPersistedProfileState, partitionsFromProfileRoot, checkWorkspaceLayoutRules } =
|
|
createRequire(import.meta.url)(outfile)
|
|
const violations = checkWorkspaceLayoutRules(
|
|
partitionsFromProfileRoot(readPersistedProfileState(resolve(userDataDir)))
|
|
)
|
|
for (const violation of violations) {
|
|
console.log(`${violation.rule}: ${violation.detail}`)
|
|
}
|
|
console.log(`${violations.length} layout rule breach(es) in ${userDataDir}`)
|
|
process.exitCode = violations.length > 0 ? 1 : 0
|
|
} finally {
|
|
await rm(scratch, { recursive: true, force: true })
|
|
}
|