mirror of https://github.com/embarklabs/embark.git
'open-browser' event
This commit is contained in:
parent
103bb43a05
commit
68c6d1549a
|
@ -2,6 +2,7 @@ const fs = require('../../core/fs.js');
|
||||||
var {canonicalHost} = require('../../utils/host.js');
|
var {canonicalHost} = require('../../utils/host.js');
|
||||||
var utils = require('../../utils/utils.js');
|
var utils = require('../../utils/utils.js');
|
||||||
var Server = require('./server.js');
|
var Server = require('./server.js');
|
||||||
|
const opn = require('opn');
|
||||||
|
|
||||||
require('ejs');
|
require('ejs');
|
||||||
const Templates = {
|
const Templates = {
|
||||||
|
@ -73,6 +74,7 @@ class WebServer {
|
||||||
|
|
||||||
listenToCommands() {
|
listenToCommands() {
|
||||||
this.events.setCommandHandler('embark-building-placeholder', (cb) => this.buildPlaceholderPage(cb));
|
this.events.setCommandHandler('embark-building-placeholder', (cb) => this.buildPlaceholderPage(cb));
|
||||||
|
this.events.setCommandHandler('open-browser', (cb) => this.openBrowser(cb));
|
||||||
this.events.setCommandHandler('start-webserver', (cb) => this.server.start(cb));
|
this.events.setCommandHandler('start-webserver', (cb) => this.server.start(cb));
|
||||||
this.events.setCommandHandler('stop-webserver', (cb) => this.server.stop(cb));
|
this.events.setCommandHandler('stop-webserver', (cb) => this.server.stop(cb));
|
||||||
}
|
}
|
||||||
|
@ -102,6 +104,14 @@ class WebServer {
|
||||||
fs.mkdirpSync(this.buildDir); // create buildDir/ folder if not already exists
|
fs.mkdirpSync(this.buildDir); // create buildDir/ folder if not already exists
|
||||||
fs.writeFile(utils.joinPath(this.buildDir, 'index.html'), html, cb);
|
fs.writeFile(utils.joinPath(this.buildDir, 'index.html'), html, cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
openBrowser(cb) {
|
||||||
|
const _cb = () => { cb(); };
|
||||||
|
return opn(
|
||||||
|
`http://${canonicalHost(this.server.hostname)}:${this.server.port}`,
|
||||||
|
{wait: false}
|
||||||
|
).then(_cb, _cb); // fail silently, e.g. in a docker container
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = WebServer;
|
module.exports = WebServer;
|
||||||
|
|
|
@ -3,7 +3,6 @@ const async = require('async');
|
||||||
let http = require('http');
|
let http = require('http');
|
||||||
let serveStatic = require('serve-static');
|
let serveStatic = require('serve-static');
|
||||||
const {canonicalHost, defaultHost, dockerHostSwap} = require('../../utils/host');
|
const {canonicalHost, defaultHost, dockerHostSwap} = require('../../utils/host');
|
||||||
const opn = require('opn');
|
|
||||||
require('http-shutdown').extend();
|
require('http-shutdown').extend();
|
||||||
|
|
||||||
class Server {
|
class Server {
|
||||||
|
@ -48,12 +47,7 @@ class Server {
|
||||||
function openBrowser(next) {
|
function openBrowser(next) {
|
||||||
if (!self.opened) {
|
if (!self.opened) {
|
||||||
self.opened = true;
|
self.opened = true;
|
||||||
const _next = () => { next(); };
|
return self.events.request('open-browser', next);
|
||||||
// fail silently, e.g. in a docker container
|
|
||||||
return opn(
|
|
||||||
`http://${canonicalHost(self.hostname)}:${self.port}`,
|
|
||||||
{wait: false}
|
|
||||||
).then(_next, _next);
|
|
||||||
}
|
}
|
||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue