UNPKG

ziti-sdk-c-nodejs

Version:

Node.js wrapper for OpenZiti C SDK

134 lines (109 loc) • 4.95 kB
#!/usr/bin/env node 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');