Files
lifeforge/scripts/forge.ts
Melvin Chia 017789cd71 25w30
Former-commit-id: 300e6c1e0854e18ca8f9743b55a39a3f7f3a2bec [formerly 1726d72f3dc439cfab323fb42f1f4fa408245ead] [formerly e478847f0379ece71fe024ca894740b50c1b2596 [formerly bbae20d6f8d156881ced8d8f7caf903d6785c56c]]
Former-commit-id: 4ec5432e5e521e7f2bc8d7bfc890ab44fba0ff8d [formerly 5556d79045a913b9ba5fd4a4769c362a67c7f6ec]
Former-commit-id: 877383e4305425395d7641c1e3002a302e0a4be6
2025-07-21 07:32:57 +08:00

56 lines
1.7 KiB
TypeScript

import { execSync } from 'child_process'
const PROCESS_ALLOWED = ['build', 'dev', 'types', 'lint']
const PROJECTS_ALLOWED = {
client: 'client',
server: 'server',
shared: 'shared',
ui: 'packages/lifeforge-ui',
'apps:localization-manager': 'apps/localization-manager',
'apps:docs': 'apps/docs',
'apps:api-builder': 'apps/api-builder'
}
const processType = process.argv[2]
const projectTypes = process.argv.slice(3)
if (!PROCESS_ALLOWED.includes(processType)) {
console.error(
`Invalid process type: ${processType}. Allowed types are: ${PROCESS_ALLOWED.join(', ')}`
)
process.exit(1)
}
if (
!projectTypes.every(projectType =>
Object.keys(PROJECTS_ALLOWED).includes(projectType)
)
) {
console.error(
`Invalid project type: ${projectTypes.find(projectType => !Object.keys(PROJECTS_ALLOWED).includes(projectType))}. Allowed projects are: ${Object.keys(PROJECTS_ALLOWED).join(', ')}`
)
process.exit(1)
}
const commands = projectTypes.map(
projectType => `cd ${PROJECTS_ALLOWED[projectType]} && bun run ${processType}`
)
const finalCommand = `concurrently --kill-others --success first --prefix-name "${projectTypes.join(',')}" --names "${projectTypes.join(
','
)}" --prefix-colors "${projectTypes.map(() => 'cyan').join(',')}" ${commands.map(cmd => `"${cmd}"`).join(' ')}`
try {
console.log(`Executing command: ${finalCommand}`)
execSync(finalCommand, { stdio: 'inherit' })
console.log(
`${processType.charAt(0).toUpperCase() + processType.slice(1)} completed successfully for ${projectTypes.join(', ')}.`
)
} catch (error) {
console.error(
`${processType.charAt(0).toUpperCase() + processType.slice(1)} failed for ${projectTypes.join(', ')}.`
)
console.error(error)
process.exit(1)
}