UNPKG

cordova-plugin-adincube

Version:

AdinCube SDK for PhoneGap/Cordova

70 lines (59 loc) 1.87 kB
module.exports = async function(context) { try { var fs = require('fs'); var path = require('path'); var https = require('https'); var pluginDir = path.join(context.opts.projectRoot, 'plugins', 'cordova-plugin-adincube') var libDirectory = path.join(pluginDir, 'libs', 'ios'); var libName = 'libAdinCube.a' var libPath = path.join(libDirectory, libName); if (fs.existsSync(libPath)) { console.warn("iOS lib is already there, continuing...") return; } var urlFile = path.join(pluginDir, 'iosLibUrl.txt') var url = fs.readFileSync(urlFile, 'utf8') var zipPath = path.join(libDirectory, 'libAdinCube.zip'); //create folder structure var libsDir = path.join(pluginDir, 'libs'); if (!fs.existsSync(libsDir)){ fs.mkdirSync(libsDir); } var iosDir = path.join(libsDir, 'ios'); if (!fs.existsSync(iosDir)){ fs.mkdirSync(iosDir); } const TIME_BETWEEN_DOTS = 2000; const downloadLibZip = () => new Promise((resolve, reject) => { https.get(url, res => { console.log('Downloading'); const intervalId = setInterval(() => { console.log('.'); }, TIME_BETWEEN_DOTS); const file = fs.createWriteStream(zipPath); res .on('data', function(data) { file.write(data); }) .on('end', function() { file.end(); file.on('close', function() { clearInterval(intervalId); resolve(file); }) }) // TODO: consider improving error handler .on('error', () => { reject(); }); }); }); const file = await downloadLibZip(); const AdmZip = require('adm-zip'); const zip = new AdmZip(zipPath); zip.extractAllTo(libDirectory, true); fs.unlinkSync(zipPath); } catch (e) { throw new Error('AdinCube - Error while downloading iOS lib dependecy: ' + e.message); } }