dpdm-fast
Version:
Analyze circular dependencies in your JavaScript/TypeScript projects with Rust.
47 lines (36 loc) • 1.07 kB
JavaScript
const path = require('path');
const os = require('os');
const fs = require('fs');
const { spawn } = require('child_process');
const platform = os.platform();
const arch = os.arch();
const key = `${platform}-${arch}`;
const keyStore = {
'darwin-arm64': 'aarch64-apple-darwin',
'darwin-x64': 'x86_64-apple-darwin',
'linux-arm64': 'aarch64-unknown-linux-musl',
'linux-x64': 'x86_64-unknown-linux-musl',
'win32-x64': 'x86_64-pc-windows-gnu',
};
const sourceDir = path.join(__dirname, '../target', keyStore[key], 'release');
const binFile = path.join(
sourceDir,
platform === 'win32' ? 'dpdm.exe' : 'dpdm',
);
try {
if (platform !== 'win32') {
fs.chmodSync(binFile, 0o755);
}
} catch (e) {
// 有些系统可能 readonly,可以忽略
}
const args = process.argv.slice(2);
const child = spawn(binFile, args, { stdio: 'inherit' });
child.on('close', (code) => {
process.exit(code);
});
child.on('error', (error) => {
console.error(`Failed to execute ${binFile}: ${error.message}`);
process.exit(error.code);
});