|
|
@ -1,8 +1,8 @@ |
|
|
|
const httpServer = require('http-server'); |
|
|
|
const httpServer = require('http-server') |
|
|
|
const remixd = require('remixd'); |
|
|
|
const remixd = require('remixd') |
|
|
|
const path = require('path'); |
|
|
|
const path = require('path') |
|
|
|
const merge = require('merge'); |
|
|
|
const merge = require('merge') |
|
|
|
const colors = require('colors'); |
|
|
|
const colors = require('colors') |
|
|
|
|
|
|
|
|
|
|
|
const DEFAULT_OPTIONS = { |
|
|
|
const DEFAULT_OPTIONS = { |
|
|
|
protocol: "http", |
|
|
|
protocol: "http", |
|
|
@ -12,43 +12,43 @@ const DEFAULT_OPTIONS = { |
|
|
|
|
|
|
|
|
|
|
|
module.exports = (embark) => { |
|
|
|
module.exports = (embark) => { |
|
|
|
// plugin options
|
|
|
|
// plugin options
|
|
|
|
const readOnly = embark.pluginConfig.readOnly || false; |
|
|
|
const readOnly = embark.pluginConfig.readOnly || false |
|
|
|
const {protocol, host, port} = merge.recursive(DEFAULT_OPTIONS, embark.pluginConfig.remixIde); |
|
|
|
const {protocol, host, port} = merge.recursive(DEFAULT_OPTIONS, embark.pluginConfig.remixIde) |
|
|
|
|
|
|
|
|
|
|
|
// globals
|
|
|
|
// globals
|
|
|
|
const remixIdeUrl = `${protocol}://${host}` + `${port ? `:${port}` : ''}`; |
|
|
|
const remixIdeUrl = `${protocol}://${host}` + `${port ? `:${port}` : ''}` |
|
|
|
const sharedFolder = path.join(__dirname, '../../'); |
|
|
|
const sharedFolder = path.join(__dirname, '../../') |
|
|
|
const sharedFolderService = remixd.services.sharedFolder; |
|
|
|
const sharedFolderService = remixd.services.sharedFolder |
|
|
|
let server; |
|
|
|
let server |
|
|
|
|
|
|
|
|
|
|
|
// setup HTTP server
|
|
|
|
// setup HTTP server
|
|
|
|
if (['localhost', '127.0.0.1', '0.0.0.0'].includes(host)) { |
|
|
|
if (['localhost', '127.0.0.1', '0.0.0.0'].includes(host)) { |
|
|
|
server = httpServer.createServer({ |
|
|
|
server = httpServer.createServer({ |
|
|
|
root: path.join(__dirname, '../../node_modules/remix-ide') |
|
|
|
root: path.join(__dirname, '../../node_modules/remix-ide') |
|
|
|
}); |
|
|
|
}) |
|
|
|
server.listen(port, '127.0.0.1', function () { |
|
|
|
server.listen(port, '127.0.0.1', function () { |
|
|
|
embark.logger.info('Remix IDE (via embark-remix plugin) available at ' + colors.underline(remixIdeUrl)); |
|
|
|
embark.logger.info('Remix IDE (via embark-remix plugin) available at ' + colors.underline(remixIdeUrl)) |
|
|
|
}); |
|
|
|
}) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
embark.logger.info('embark-remix is set to connect to a Remix IDE at ' + colors.underline(remixIdeUrl)); |
|
|
|
embark.logger.info('embark-remix is set to connect to a Remix IDE at ' + colors.underline(remixIdeUrl)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// setup Embark service check
|
|
|
|
// setup Embark service check
|
|
|
|
embark.registerServiceCheck('Remix IDE', (cb) => { |
|
|
|
embark.registerServiceCheck('Remix IDE', (cb) => { |
|
|
|
return cb({ name: `Remix IDE ${host}:${port}`, status: 'on' }); |
|
|
|
return cb({ name: `Remix IDE ${host}:${port}`, status: 'on' }) |
|
|
|
}); |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
// setup remixd shared folder service
|
|
|
|
// setup remixd shared folder service
|
|
|
|
const sharedFolderRouter = new remixd.Router(65520, sharedFolderService, { remixIdeUrl }, (webSocket) => { |
|
|
|
const sharedFolderRouter = new remixd.Router(65520, sharedFolderService, { remixIdeUrl }, (webSocket) => { |
|
|
|
sharedFolderService.setWebSocket(webSocket); |
|
|
|
sharedFolderService.setWebSocket(webSocket) |
|
|
|
sharedFolderService.setupNotifications(sharedFolder); |
|
|
|
sharedFolderService.setupNotifications(sharedFolder) |
|
|
|
sharedFolderService.sharedFolder(sharedFolder, readOnly); |
|
|
|
sharedFolderService.sharedFolder(sharedFolder, readOnly) |
|
|
|
}) |
|
|
|
}) |
|
|
|
const killRemixD = sharedFolderRouter.start(); |
|
|
|
const killRemixD = sharedFolderRouter.start() |
|
|
|
const kill = () => { |
|
|
|
const kill = () => { |
|
|
|
if(server) server.close(); |
|
|
|
if(server) server.close() |
|
|
|
embark.logger.info(colors.red('embark-remix stopped')); |
|
|
|
embark.logger.info(colors.red('embark-remix stopped')) |
|
|
|
process.exit(); |
|
|
|
process.exit() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (process.platform === 'win32') { |
|
|
|
if (process.platform === 'win32') { |
|
|
@ -56,12 +56,12 @@ module.exports = (embark) => { |
|
|
|
input: process.stdin, |
|
|
|
input: process.stdin, |
|
|
|
output: process.stdout |
|
|
|
output: process.stdout |
|
|
|
}).on('SIGINT', function () { |
|
|
|
}).on('SIGINT', function () { |
|
|
|
process.emit('SIGINT'); |
|
|
|
process.emit('SIGINT') |
|
|
|
}); |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
process.on('SIGINT', kill); // catch ctrl-c
|
|
|
|
process.on('SIGINT', kill) // catch ctrl-c
|
|
|
|
process.on('SIGTERM', kill); // catch kill
|
|
|
|
process.on('SIGTERM', kill) // catch kill
|
|
|
|
process.on('exit', killRemixD); |
|
|
|
process.on('exit', killRemixD) |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|