UNPKG

couchbase

Version:

The official Couchbase Node.js Client Library.

141 lines (124 loc) 3.35 kB
const prebuilds = require('./prebuilds') function buildPrebuild( runtime, runtimeVersion, useOpenSSL, configure, setCpmCache, useCmakeJsCompile, cmakeParallel ) { runtime = runtime || process.env.CN_PREBUILD_RUNTIME || 'node' runtimeVersion = runtimeVersion || process.env.CN_PREBUILD_RUNTIME_VERSION || process.version.replace('v', '') if (typeof useOpenSSL === 'undefined') { useOpenSSL = prebuilds.ENV_TRUE.includes( (process.env.CN_USE_OPENSSL || 'true').toLowerCase() ) } // we only want to configure if setting the CPM cache if (configure || setCpmCache) { prebuilds.configureBinary( runtime, runtimeVersion, useOpenSSL, setCpmCache, cmakeParallel ) } else { prebuilds.buildBinary( runtime, runtimeVersion, useOpenSSL, useCmakeJsCompile, cmakeParallel ) } } let configurePrebuild = false let setCpmCache = false let useCmakeJsCompile = true let runtime, runtimeVersion, useOpenSSL let cmakeParallel = 4 const args = process.argv.slice(2) if (args.length > 0) { // --configure if (args.includes('--configure')) { configurePrebuild = true } // --set-cpm-cache if (args.includes('--set-cpm-cache')) { setCpmCache = true } // --runtime=[node|electron] OR --runtime [node|electron] const runtimeIdx = args.findIndex((a) => { return a.includes('runtime') && !a.includes('version') }) if (runtimeIdx >= 0) { let rt = undefined if (args[runtimeIdx].includes('=')) { rt = args[runtimeIdx].split('=')[1] } else if (args.length - 1 <= runtimeIdx + 1) { rt = args[runtimeIdx + 1] } if (rt && ['node', 'electron'].includes(rt)) { runtime = rt } } // --runtime-version=<> OR --runtime-version <> const runtimeVersionIdx = args.findIndex((a) => a.includes('runtime-version')) if (runtimeVersionIdx >= 0) { let rtv = undefined if (args[runtimeVersionIdx].includes('=')) { rtv = args[runtimeVersionIdx].split('=')[1] } else if (args.length - 1 <= runtimeVersionIdx + 1) { rtv = args[runtimeVersionIdx + 1] } if (rtv) { const tokens = rtv.split('.') if (tokens.length == 3 && tokens.every((t) => !isNaN(parseInt(t)))) { runtimeVersion = rtv } } } // --use-boringssl or --use-openssl if (args.includes('--use-boringssl') && args.includes('--use-openssl')) { throw new Error('Cannot set both BoringSSL and OpenSSL to be used.') } if (args.includes('--use-boringssl')) { useOpenSSL = false } if (args.includes('--use-openssl')) { useOpenSSL = true } // --parallel=<> OR --parallel <> const parallelIdx = args.findIndex((a) => a.includes('parallel')) if (parallelIdx >= 0) { let pv = undefined if (args[parallelIdx].includes('=')) { pv = args[parallelIdx].split('=')[1] } else if (args.length - 1 <= parallelIdx + 1) { pv = args[parallelIdx + 1] } if (pv && !isNaN(parseInt(pv))) { const pvi = parseInt(pv) if (pvi <= os.cpus().length) { cmakeParallel = pvi } } } if (args.includes('--use-cmakejs-build')) { useCmakeJsCompile = false } } buildPrebuild( runtime, runtimeVersion, useOpenSSL, configurePrebuild, setCpmCache, useCmakeJsCompile, cmakeParallel )