mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
60 lines
2.0 KiB
JavaScript
60 lines
2.0 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/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') {
|
|
if (!fs.existsSync(path.join(firefoxFolder, 'browser', 'defaults')))
|
|
await mkdirAsync(path.join(firefoxFolder, 'browser', 'defaults'));
|
|
if (!fs.existsSync(path.join(firefoxFolder, 'browser', 'defaults', 'preferences')))
|
|
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;
|