selenium-drivers
Version:
Node.js binding for selenium browser drivers. Sets up your system environment and keeps drivers up to date for various browsers and operating systems.
65 lines (46 loc) • 1.44 kB
JavaScript
var log = require('./log');
var path = require('path');
module.exports = {
extract: extract
};
function extract(driver) {
log.infoIf(!driver.opts.silent, 'Extracting archive contents');
return new Promise(function (resolve, reject) {
if (driver.archiveFileName.indexOf('zip') >= 0) {
var entry = unzip(driver);
resolve(entry);
}
if (driver.archiveFileName.indexOf('tar.gz') >= 0) {
resolve(untar(driver));
}
});
}
function unzip(driver) {
var AdmZip = require('adm-zip');
var zip = new AdmZip(driver.archivePath);
zip.extractAllTo(driver.downloadPath, true);
var entries = zip.getEntries();
var entryName = entries[0].entryName;
log.infoIf(!driver.opts.silent, 'Extracted new file: ' + entryName);
return entryName;
}
function untar(driver) {
var targz = require('tar.gz');
var fs = require('fs');
var parse = targz().createParseStream();
var entryName; // affected by temporal dependency!
parse.on('entry', function (entry) {
entryName = entry.path;
});
var readStream = fs.createReadStream(driver.archivePath);
readStream.pipe(parse);
return new Promise(function (resolve) {
var extract = targz().extract(readStream, driver.downloadPath);
extract.then(function () {
setTimeout(function () {
log.infoIf(!driver.opts.silent, 'Extracted new file: ' + entryName);
resolve(entryName);
}, 100);
});
});
}