Files
metabuilder/dbal/shared/tools/cpp-build-assistant/dependencies.ts
2026-01-03 20:17:49 +00:00

48 lines
1.2 KiB
TypeScript

import { execSync } from 'child_process'
import os from 'os'
import { log } from './logging'
export const checkCommand = (command: string, name: string): boolean => {
try {
execSync(`${command} --version`, { stdio: 'pipe' })
log.success(`${name} is installed`)
return true
} catch {
log.error(`${name} is NOT installed`)
return false
}
}
export const checkDependencies = (): boolean => {
log.section('Checking Dependencies')
const deps = [
{ cmd: 'cmake', name: 'CMake' },
{ cmd: 'conan', name: 'Conan' },
{ cmd: 'ninja', name: 'Ninja' },
{ cmd: 'g++', name: 'GCC' },
]
const results = deps.map(({ cmd, name }) => ({
name,
installed: checkCommand(cmd, name),
}))
const allInstalled = results.every(result => result.installed)
if (!allInstalled) {
log.warn('\nSome dependencies are missing. Install them:')
if (os.platform() === 'darwin') {
log.info(' brew install cmake conan ninja gcc')
} else if (os.platform() === 'linux') {
log.info(' sudo apt-get install cmake ninja-build g++')
log.info(' pip install conan')
} else if (os.platform() === 'win32') {
log.info(' choco install cmake conan ninja')
}
}
return allInstalled
}