ziti-sdk-c-nodejs
Version:
Node.js wrapper for OpenZiti C SDK
134 lines (109 loc) ⢠4.95 kB
JavaScript
const fs = require('fs');
const path = require('path');
console.log('š§ Simulating Cross-Platform Testing for Ziti SDK Node.js Wrapper\n');
// Check all platform libraries
const platforms = [
{
name: 'Windows',
dir: 'ziti-sdk-1.7.8-Windows-AMD64',
lib: 'ziti.dll',
current: process.platform === 'win32'
},
{
name: 'Linux',
dir: 'ziti-sdk-1.7.8-Linux-x86_64',
lib: 'libziti.so',
current: process.platform === 'linux'
},
{
name: 'macOS',
dir: 'ziti-sdk-1.7.8-Darwin-arm64',
lib: 'libziti.dylib',
current: process.platform === 'darwin'
}
];
let allPlatformsReady = true;
console.log('š Platform Library Check:\n');
for (const platform of platforms) {
const sdkDir = path.join(__dirname, '..', platform.dir);
const libPath = path.join(sdkDir, 'lib', platform.lib);
const includeDir = path.join(sdkDir, 'include');
const sdkExists = fs.existsSync(sdkDir);
const libExists = fs.existsSync(libPath);
const includeExists = fs.existsSync(includeDir);
const status = sdkExists && libExists && includeExists ? 'ā
' : 'ā';
const currentMarker = platform.current ? ' (current)' : '';
console.log(`${status} ${platform.name}${currentMarker}:`);
console.log(` SDK Directory: ${sdkExists ? 'ā
' : 'ā'} ${platform.dir}`);
console.log(` Library: ${libExists ? 'ā
' : 'ā'} ${platform.lib}`);
console.log(` Headers: ${includeExists ? 'ā
' : 'ā'} include/`);
if (libExists) {
const stats = fs.statSync(libPath);
const sizeMB = (stats.size / (1024 * 1024)).toFixed(1);
console.log(` Size: ${sizeMB} MB`);
}
console.log('');
if (!sdkExists || !libExists || !includeExists) {
allPlatformsReady = false;
}
}
// Check binding.gyp configuration
console.log('š§ Build Configuration Check:\n');
const bindingGypPath = path.join(__dirname, '..', 'binding.gyp');
if (fs.existsSync(bindingGypPath)) {
const bindingGyp = fs.readFileSync(bindingGypPath, 'utf8');
const hasWindowsConfig = bindingGyp.includes('ziti-sdk-1.7.8-Windows-AMD64');
const hasLinuxConfig = bindingGyp.includes('ziti-sdk-1.7.8-Linux-x86_64');
const hasMacConfig = bindingGyp.includes('ziti-sdk-1.7.8-Darwin-arm64');
console.log(`Windows config: ${hasWindowsConfig ? 'ā
' : 'ā'}`);
console.log(`Linux config: ${hasLinuxConfig ? 'ā
' : 'ā'}`);
console.log(`macOS config: ${hasMacConfig ? 'ā
' : 'ā'}`);
console.log('');
}
// Check wrapper code
console.log('š§ Wrapper Code Check:\n');
const wrapperPath = path.join(__dirname, '..', 'src', 'ziti_wrapper.cpp');
if (fs.existsSync(wrapperPath)) {
const wrapperCode = fs.readFileSync(wrapperPath, 'utf8');
const hasWindowsCode = wrapperCode.includes('#ifdef _WIN32');
const hasLinuxCode = wrapperCode.includes('dlopen');
const hasDynamicLoading = wrapperCode.includes('LoadLibraryA') || wrapperCode.includes('dlopen');
console.log(`Windows code: ${hasWindowsCode ? 'ā
' : 'ā'}`);
console.log(`Linux/macOS code: ${hasLinuxCode ? 'ā
' : 'ā'}`);
console.log(`Dynamic loading: ${hasDynamicLoading ? 'ā
' : 'ā'}`);
console.log('');
}
// Summary
console.log('š Summary:\n');
if (allPlatformsReady) {
console.log('š All platforms are ready for testing!');
console.log('');
console.log('ā
Windows: Ready with ziti.dll');
console.log('ā
Linux: Ready with libziti.so');
console.log('ā
macOS: Ready with libziti.dylib');
console.log('');
console.log('š You can now:');
console.log(' - Test on Windows: npm run test:cross-platform');
console.log(' - Deploy to Linux/macOS for testing');
console.log(' - Use GitHub Actions for automated testing');
} else {
console.log('ā ļø Some platforms are missing libraries:');
console.log('');
for (const platform of platforms) {
const sdkDir = path.join(__dirname, '..', platform.dir);
const libPath = path.join(sdkDir, 'lib', platform.lib);
const includeDir = path.join(sdkDir, 'include');
const sdkExists = fs.existsSync(sdkDir);
const libExists = fs.existsSync(libPath);
const includeExists = fs.existsSync(includeDir);
if (!sdkExists || !libExists || !includeExists) {
console.log(`ā ${platform.name}: Missing required files`);
}
}
}
console.log('\nš Next Steps:');
console.log('1. Test on current platform: npm run test:cross-platform');
console.log('2. Deploy to other platforms for testing');
console.log('3. Set up CI/CD with GitHub Actions');
console.log('4. Publish to npm with pre-built binaries');