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 @@ ...@@ -10,8 +10,32 @@
var execSync = require('child_process').execSync; var execSync = require('child_process').execSync;
var opn = require('opn'); var opn = require('opn');
// https://github.com/sindresorhus/opn#app
var OSX_CHROME = 'google chrome';
function openBrowser(url) { 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 {
// Try our best to reuse existing tab // Try our best to reuse existing tab
// on OS X Google Chrome with AppleScript // on OS X Google Chrome with AppleScript
...@@ -25,11 +49,12 @@ function openBrowser(url) { ...@@ -25,11 +49,12 @@ function openBrowser(url) {
// Ignore errors. // Ignore errors.
} }
} }
// Fallback to opn // Fallback to opn
// (It will always open new tab) // (It will always open new tab)
try { try {
var option = {app: process.env.BROWSER}; var options = {app: browser};
opn(url, option).catch(() => {}); // Prevent `unhandledRejection` error. opn(url, options).catch(() => {}); // Prevent `unhandledRejection` error.
return true; return true;
} catch (err) { } catch (err) {
return false; 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