Commit 519d32a1 authored by Dan Abramov's avatar Dan Abramov Committed by GitHub
Browse files

Only open Chrome tab if BROWSER is missing or is Chrome (#1247)

parent 759806ed
No related merge requests found
Showing with 28 additions and 3 deletions
+28 -3
......@@ -10,8 +10,32 @@
var execSync = require('child_process').execSync;
var opn = require('opn');
// https://github.com/sindresorhus/opn#app
var OSX_CHROME = 'google chrome';
function openBrowser(url) {
if (process.platform === 'darwin') {
// Attempt to honor this environment variable.
// It is specific to the operating system.
// See https://github.com/sindresorhus/opn#app for documentation.
const browser = process.env.BROWSER;
// Special case: BROWSER="none" will prevent opening completely.
if (browser === 'none') {
return false;
}
// If we're on OS X, the user hasn't specifically
// requested a different browser, we can try opening
// Chrome with AppleScript. This lets us reuse an
// existing tab when possible instead of creating a new one.
const shouldTryOpenChromeWithAppleScript = (
process.platform === 'darwin' && (
typeof browser !== 'string' ||
browser === OSX_CHROME
)
);
if (shouldTryOpenChromeWithAppleScript) {
try {
// Try our best to reuse existing tab
// on OS X Google Chrome with AppleScript
......@@ -25,11 +49,12 @@ function openBrowser(url) {
// Ignore errors.
}
}
// Fallback to opn
// (It will always open new tab)
try {
var option = {app: process.env.BROWSER};
opn(url, option).catch(() => {}); // Prevent `unhandledRejection` error.
var options = {app: browser};
opn(url, options).catch(() => {}); // Prevent `unhandledRejection` error.
return true;
} catch (err) {
return false;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment