Files
citygen/tools/rust.mjs
T

15 lines
830 B
JavaScript

import { existsSync } from 'node:fs';
import { resolve, delimiter } from 'node:path';
import { spawn } from 'node:child_process';
const local = resolve('.tools/cargo');
const executable = resolve(local,'bin',process.platform === 'win32' ? 'cargo.exe' : 'cargo');
const env = {...process.env};
if (existsSync(executable)) {
env.CARGO_HOME = local; env.RUSTUP_HOME = resolve('.tools/rustup');
const pathKey=Object.keys(env).find(key=>key.toLowerCase()==='path') || 'PATH';
env[pathKey] = `${resolve(local,'bin')}${delimiter}${env[pathKey] || ''}`;
}
const child = spawn(existsSync(executable) ? executable : 'cargo',process.argv.slice(2),{stdio:'inherit',env});
child.on('error',error=>{console.error(`Rust toolchain is required: ${error.message}`);process.exitCode=1;});
child.on('exit',code=>{process.exitCode=code ?? 1;});