cordova-plugin-adincube
Version:
AdinCube SDK for PhoneGap/Cordova
70 lines (59 loc) • 1.87 kB
JavaScript
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);
}
}