58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
|
const os = require('os');
|
||
|
const fs = require('fs');
|
||
|
const path = require('path');
|
||
|
|
||
|
// Install browser preferences after downloading and unpacking
|
||
|
// firefox instances.
|
||
|
// Based on: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Enterprise_deployment_before_60#Configuration
|
||
|
async function installFirefoxPreferences(executablePath) {
|
||
|
const firefoxFolder = path.dirname(executablePath);
|
||
|
const {helper} = require('../lib/firefox/helper');
|
||
|
const mkdirAsync = helper.promisify(fs.mkdir.bind(fs));
|
||
|
|
||
|
let prefPath = '';
|
||
|
let configPath = '';
|
||
|
if (os.platform() === 'darwin') {
|
||
|
prefPath = path.join(firefoxFolder, '..', 'Resources', 'defaults', 'pref');
|
||
|
configPath = path.join(firefoxFolder, '..', 'Resources');
|
||
|
} else if (os.platform() === 'linux') {
|
||
|
await mkdirAsync(path.join(firefoxFolder, 'browser', 'defaults'));
|
||
|
await mkdirAsync(path.join(firefoxFolder, 'browser', 'defaults', 'preferences'));
|
||
|
prefPath = path.join(firefoxFolder, 'browser', 'defaults', 'preferences');
|
||
|
configPath = firefoxFolder;
|
||
|
} else if (os.platform() === 'win32') {
|
||
|
prefPath = path.join(firefoxFolder, 'defaults', 'pref');
|
||
|
configPath = firefoxFolder;
|
||
|
} else {
|
||
|
throw new Error('Unsupported platform: ' + os.platform());
|
||
|
}
|
||
|
|
||
|
await Promise.all([
|
||
|
copyFile({
|
||
|
from: path.join(__dirname, '00-puppeteer-prefs.js'),
|
||
|
to: path.join(prefPath, '00-puppeteer-prefs.js'),
|
||
|
}),
|
||
|
copyFile({
|
||
|
from: path.join(__dirname, 'puppeteer.cfg'),
|
||
|
to: path.join(configPath, 'puppeteer.cfg'),
|
||
|
}),
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
function copyFile({from, to}) {
|
||
|
var rd = fs.createReadStream(from);
|
||
|
var wr = fs.createWriteStream(to);
|
||
|
return new Promise(function(resolve, reject) {
|
||
|
rd.on('error', reject);
|
||
|
wr.on('error', reject);
|
||
|
wr.on('finish', resolve);
|
||
|
rd.pipe(wr);
|
||
|
}).catch(function(error) {
|
||
|
rd.destroy();
|
||
|
wr.end();
|
||
|
throw error;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
module.exports = installFirefoxPreferences;
|