Skip to content

Commit

Permalink
Better browser luncher 馃寧 (#409)
Browse files Browse the repository at this point in the history
  • Loading branch information
jukben committed Apr 22, 2018
1 parent 9016ddb commit 7e2d713
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 24 deletions.
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -63,8 +63,9 @@
"node-emoji": "^1.8.1",
"node-fetch": "^2.0.0",
"open-in-editor": "^2.2.0",
"opn": "^4.0.2",
"opn": "^5.3.0",
"ora": "^1.2.0",
"platform-select": "^1.1.0",
"react": "^16.2.0",
"react-deep-force-update": "^2.0.1",
"react-hot-loader": "3.0.0-beta.7",
Expand Down
50 changes: 32 additions & 18 deletions src/server/middleware/devToolsMiddleware.js
Expand Up @@ -5,27 +5,41 @@
const fs = require('fs');
const path = require('path');
const opn = require('opn');
const select = require('platform-select');
const logger = require('../../logger');

/**
* Returns name of Chrome app to launch based on the platform
* Launches given `url` in browser based on platform
*/
const getChromeAppName = () => {
switch (process.platform) {
case 'darwin':
return 'google chrome';
case 'win32':
return 'chrome';
default:
return 'google-chrome';
}
};
const launchBrowser = url => {
const open = app => () => opn(url, { app });

/**
* Launches given `url` in Chrome
*/
const launchChrome = url => {
opn(url, { app: getChromeAppName() }, err => {
console.error('Google Chrome exited with error', err);
/**
* Run Chrome (Chrome Canary) or supported platform.
* In case of macOS, we can eventually fallback to Safari.
*
* select(attemp1, attemp2, attemp3,...) // attempt to run is from left to right
*/
select(
{
// try to find & run Google Chrome
darwin: open('google chrome'),
win32: open('chrome'),
_: open('google-chrome'),
},
{
// On macOS let's try to find & run Canary
darwin: open('google chrome canary'),
},
{
// No Canary / Chrome, let's run Safari
darwin: open('safari'),
}
).catch(e => {
console.log(e); // print error to artifacts
logger.warn(
`Cannot start browser for debugging. Navigate manually to "${url}"`
);
});
};

Expand Down Expand Up @@ -64,7 +78,7 @@ function devToolsMiddleware(debuggerProxy) {
*/
case '/launch-js-devtools': {
if (!debuggerProxy.isDebuggerConnected()) {
launchChrome(`http://localhost:${req.socket.localPort}/debugger-ui`);
launchBrowser(`http://localhost:${req.socket.localPort}/debugger-ui`);
}
res.end('OK');
break;
Expand Down
17 changes: 12 additions & 5 deletions yarn.lock
Expand Up @@ -3889,6 +3889,10 @@ is-windows@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"

is-wsl@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"

isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
Expand Down Expand Up @@ -5344,12 +5348,11 @@ opn@^3.0.2:
dependencies:
object-assign "^4.0.1"

opn@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95"
opn@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c"
dependencies:
object-assign "^4.0.1"
pinkie-promise "^2.0.0"
is-wsl "^1.1.0"

optimist@^0.6.1:
version "0.6.1"
Expand Down Expand Up @@ -5606,6 +5609,10 @@ pkg-dir@^2.0.0:
dependencies:
find-up "^2.1.0"

platform-select@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/platform-select/-/platform-select-1.1.0.tgz#0226792a63903386bd37d49e40bfc22d06654670"

plist@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/plist/-/plist-2.0.1.tgz#0a32ca9481b1c364e92e18dc55c876de9d01da8b"
Expand Down

0 comments on commit 7e2d713

Please sign in to comment.