UNPKG

@bobfrankston/cmsgbox

Version:

Cross-platform dialog utility for Node.js using Python and tkinter

90 lines (73 loc) • 2.84 kB
#!/usr/bin/env node const { execSync } = require('child_process'); const os = require('os'); const fs = require('fs'); function isWSL() { try { const release = fs.readFileSync('/proc/version', 'utf8'); return release.toLowerCase().includes('microsoft'); } catch { return false; } } function isWindows() { return os.platform() === 'win32' && !isWSL(); } function runCommand(cmd, description) { console.log(`\nšŸ“¦ ${description}...`); try { execSync(cmd, { stdio: 'inherit', env: { ...process.env, NODE_OPTIONS: '--no-deprecation' } }); console.log(`āœ… ${description} completed`); } catch (error) { console.error(`āŒ ${description} failed:`, error.message); process.exit(1); } } function main() { console.log('šŸš€ Starting cross-platform prebuild...'); if (isWindows()) { console.log('šŸ“ Running on Windows'); // Build Windows binary natively runCommand('npm run prebuild:win32:x64', 'Building Windows x64 binary'); // Build Linux binaries using WSL console.log('\n🐧 Switching to WSL for Linux builds...'); runCommand('wsl npm run prebuild:linux:x64', 'Building Linux x64 binary in WSL'); runCommand('wsl npm run prebuild:linux:arm64', 'Building Linux ARM64 binary in WSL'); } else if (isWSL()) { console.log('šŸ“ Running on WSL'); // Build Linux binaries natively runCommand('npm run prebuild:linux:x64', 'Building Linux x64 binary'); runCommand('npm run prebuild:linux:arm64', 'Building Linux ARM64 binary'); // Build Windows binary using Windows cmd console.log('\n🪟 Switching to Windows for Windows build...'); runCommand('cmd.exe /c "npm run prebuild:win32:x64"', 'Building Windows x64 binary in cmd'); } else { console.log('šŸ“ Running on Linux/macOS'); console.log('āš ļø Can only build native binaries. Cross-compilation to Windows not supported.'); // Build what we can natively if (os.arch() === 'x64') { runCommand('npm run prebuild:linux:x64', 'Building Linux x64 binary'); } if (os.arch() === 'arm64') { runCommand('npm run prebuild:linux:arm64', 'Building Linux ARM64 binary'); } } console.log('\nšŸŽ‰ Prebuild process completed!'); // List what was built console.log('\nšŸ“ Built binaries:'); try { const prebuildsDir = './prebuilds'; const platforms = fs.readdirSync(prebuildsDir, { withFileTypes: true }) .filter(dirent => dirent.isDirectory()) .map(dirent => dirent.name); for (const platform of platforms) { const files = fs.readdirSync(`${prebuildsDir}/${platform}`); if (files.length > 0) { console.log(` āœ… ${platform}: ${files[0]}`); } } } catch (error) { console.log(' (Could not list prebuilds directory)'); } } main();