@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
66 lines (56 loc) • 2.5 kB
JavaScript
/**
* Standalone binary installer for better-sqlite3
* This runs as a separate process to ensure binaries are installed
*/
const fs = require('fs');
const path = require('path');
// Get paths from environment or command line
const packageRoot = process.argv[2] || process.env.OPTLY_PACKAGE_ROOT || __dirname;
const betterSqliteDir = process.argv[3] || process.env.BETTER_SQLITE_DIR;
if (!betterSqliteDir) {
console.error('Usage: install-binary.cjs <package-root> <better-sqlite3-dir>');
process.exit(1);
}
const platform = process.platform;
const arch = process.arch;
const platformDir = `${platform}-${arch}`;
const nodeVersion = process.versions.modules;
// Source binary
const sourceBinary = path.join(packageRoot, 'prebuilds', platformDir, 'better_sqlite3.node');
if (!fs.existsSync(sourceBinary)) {
console.error(`No prebuilt binary found at: ${sourceBinary}`);
process.exit(1);
}
// All possible target locations
const targets = [
path.join(betterSqliteDir, 'build', 'Release', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'build', 'Debug', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'build', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'compiled', process.version, platform, arch, 'better_sqlite3.node'),
path.join(betterSqliteDir, 'lib', 'binding', `node-v${nodeVersion}-${platform}-${arch}`, 'better_sqlite3.node'),
// Additional paths from your error log
path.join(betterSqliteDir, 'out', 'Debug', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'out', 'Release', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'Debug', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'Release', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'build', 'default', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'addon-build', 'release', 'install-root', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'addon-build', 'debug', 'install-root', 'better_sqlite3.node'),
path.join(betterSqliteDir, 'addon-build', 'default', 'install-root', 'better_sqlite3.node')
];
// Copy to all locations
let copied = 0;
for (const target of targets) {
try {
const dir = path.dirname(target);
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
fs.copyFileSync(sourceBinary, target);
copied++;
} catch (e) {
// Continue
}
}
console.log(`Installed better-sqlite3 binary to ${copied} locations`);