ziti-sdk-c-nodejs
Version:
Node.js wrapper for OpenZiti C SDK
93 lines (81 loc) âĸ 4.25 kB
JavaScript
const fs = require('fs');
const path = require('path');
function copyZitiLibraries() {
const platform = process.platform;
const packageRoot = __dirname + '/..'; // Package root directory
console.log(`đ§ Copying Ziti libraries for platform: ${platform}`);
console.log(`đ Package root: ${packageRoot}`);
if (platform === 'win32') {
const sourcePath = path.join(packageRoot, 'ziti-sdk-1.7.8-Windows-AMD64', 'lib', 'ziti.dll');
const targetPath = path.join(packageRoot, 'ziti.dll');
try {
// Check if source exists
if (!fs.existsSync(sourcePath)) {
console.log(`â ī¸ Warning: ziti.dll not found at ${sourcePath}`);
return;
}
// Copy DLL to package root
fs.copyFileSync(sourcePath, targetPath);
console.log(`â
Successfully copied ziti.dll to ${targetPath}`);
// Also copy to build directory if it exists
const buildPath = path.join(packageRoot, 'build', 'Release', 'ziti.dll');
const buildDir = path.dirname(buildPath);
if (fs.existsSync(buildDir)) {
fs.copyFileSync(sourcePath, buildPath);
console.log(`â
Successfully copied ziti.dll to build directory`);
} else {
console.log(`âšī¸ Build directory not found, skipping build copy`);
}
} catch (error) {
console.error('â Error copying ziti.dll:', error.message);
// Don't throw error, just log it
}
} else if (platform === 'linux') {
// Copy both static and shared libraries for Linux
const staticSourcePath = path.join(packageRoot, 'ziti-sdk-1.7.8-Linux-x86_64', 'lib', 'libziti.a');
const sharedSourcePath = path.join(packageRoot, 'ziti-sdk-1.7.8-Linux-x86_64', 'lib', 'libziti.so');
const staticTargetPath = path.join(packageRoot, 'libziti.a');
const sharedTargetPath = path.join(packageRoot, 'libziti.so');
try {
if (fs.existsSync(staticSourcePath)) {
fs.copyFileSync(staticSourcePath, staticTargetPath);
console.log(`â
Successfully copied libziti.a to package directory`);
}
if (fs.existsSync(sharedSourcePath)) {
fs.copyFileSync(sharedSourcePath, sharedTargetPath);
console.log(`â
Successfully copied libziti.so to package directory`);
}
} catch (error) {
console.error('â Error copying Linux libraries:', error.message);
// Don't throw error, just log it
}
} else if (platform === 'darwin') {
// Copy both static and dynamic libraries for macOS
const staticSourcePath = path.join(packageRoot, 'ziti-sdk-1.7.8-Darwin-arm64', 'lib', 'libziti.a');
const dynamicSourcePath = path.join(packageRoot, 'ziti-sdk-1.7.8-Darwin-arm64', 'lib', 'libziti.dylib');
const staticTargetPath = path.join(packageRoot, 'libziti.a');
const dynamicTargetPath = path.join(packageRoot, 'libziti.dylib');
try {
if (fs.existsSync(staticSourcePath)) {
fs.copyFileSync(staticSourcePath, staticTargetPath);
console.log(`â
Successfully copied libziti.a to package directory`);
}
if (fs.existsSync(dynamicSourcePath)) {
fs.copyFileSync(dynamicSourcePath, dynamicTargetPath);
console.log(`â
Successfully copied libziti.dylib to package directory`);
}
} catch (error) {
console.error('â Error copying macOS libraries:', error.message);
// Don't throw error, just log it
}
}
console.log('đ Ziti library copy process completed');
}
// Run the copy function with error handling
try {
copyZitiLibraries();
} catch (error) {
console.error('â Fatal error in postinstall script:', error.message);
// Exit with success to prevent npm install from failing
process.exit(0);
}