mirror of
https://github.com/Lifeforge-app/lifeforge.git
synced 2026-06-28 06:46:24 +00:00
Former-commit-id: 09024ea966618fcac32539764dcf9f0f47497f8c [formerly 8f78db02e0432e631c672630ba027e940ea58b5e] [formerly 228aefba27e2062053580015db9b9d37b5c7c11a [formerly d8bca92db171fe20f7c5cb9f85a28e4e216434e2]] Former-commit-id: 0c9ba69ae9aa92a550453541d72978e376e2f547 [formerly 33063b3f5d6bae9f114ea2c1d81ca8bd8192e284] Former-commit-id: 9126ed704c482616868f0a61aeb853341dc31fab
82 lines
2.0 KiB
TypeScript
82 lines
2.0 KiB
TypeScript
import { execSync } from 'child_process'
|
|
import fs from 'fs'
|
|
import path from 'path'
|
|
|
|
const APP_DIR = path.join(__dirname, '../apps')
|
|
|
|
const PROCESS_ALLOWED = ['build', 'dev', 'types', 'lint']
|
|
|
|
const PROJECTS_ALLOWED = Object.assign(
|
|
{
|
|
shared: 'shared',
|
|
ui: 'packages/lifeforge-ui',
|
|
client: 'client',
|
|
server: 'server'
|
|
},
|
|
Object.fromEntries(
|
|
fs
|
|
.readdirSync(APP_DIR)
|
|
.filter(f => fs.statSync(path.join(APP_DIR, f)).isDirectory())
|
|
.map(f => [f, `apps/${f}`])
|
|
)
|
|
)
|
|
|
|
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.length === 0) {
|
|
console.error(
|
|
`No project type specified. Allowed projects are: all, ${Object.keys(
|
|
PROJECTS_ALLOWED
|
|
).join(', ')}`
|
|
)
|
|
process.exit(1)
|
|
}
|
|
|
|
if (
|
|
JSON.stringify(projectTypes) !== '["all"]' &&
|
|
!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: all, ${Object.keys(PROJECTS_ALLOWED).join(', ')}`
|
|
)
|
|
process.exit(1)
|
|
}
|
|
|
|
const isAll = JSON.stringify(projectTypes) === '["all"]'
|
|
|
|
const finalProjects = isAll ? Object.keys(PROJECTS_ALLOWED) : projectTypes
|
|
|
|
const commands = finalProjects.map(
|
|
projectType =>
|
|
`cd ${PROJECTS_ALLOWED[projectType as keyof typeof PROJECTS_ALLOWED]} && bun run ${processType}`
|
|
)
|
|
|
|
console.log(`Running ${processType} for ${finalProjects.length} projects...`)
|
|
|
|
for (const command of commands) {
|
|
console.log(`Executing command: ${command}`)
|
|
|
|
try {
|
|
execSync(command, { stdio: 'inherit' })
|
|
|
|
console.log(`Command completed: ${command}`)
|
|
} catch {
|
|
console.error(`Command failed: ${command}`)
|
|
process.exit(1)
|
|
}
|
|
}
|
|
|
|
console.log(`All projects ${processType} completed successfully.`)
|
|
process.exit(0)
|