mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 14:25:02 +00:00
48 lines
1.2 KiB
TypeScript
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
|
|
}
|