|
|
|
@ -4,6 +4,7 @@ var async = require('async') |
|
|
|
|
var remixLib = require('remix-lib') |
|
|
|
|
var EventManager = require('../lib/events') |
|
|
|
|
|
|
|
|
|
var CompilerImport = require('../app/compiler/compiler-imports') |
|
|
|
|
var executionContext = require('../execution-context') |
|
|
|
|
var toolTip = require('../app/ui/tooltip') |
|
|
|
|
var globalRegistry = require('../global/registry') |
|
|
|
@ -20,6 +21,7 @@ class CmdInterpreterAPI { |
|
|
|
|
self._components.registry = localRegistry || globalRegistry |
|
|
|
|
self._components.terminal = terminal |
|
|
|
|
self._components.sourceHighlighter = new SourceHighlighter() |
|
|
|
|
self._components.fileImport = new CompilerImport() |
|
|
|
|
self._deps = { |
|
|
|
|
app: self._components.registry.get('app').api, |
|
|
|
|
fileManager: self._components.registry.get('filemanager').api, |
|
|
|
@ -141,28 +143,40 @@ class CmdInterpreterAPI { |
|
|
|
|
} |
|
|
|
|
loadurl (url, cb) { |
|
|
|
|
const self = this |
|
|
|
|
self._deps.app.importExternal(url, (err, content) => { |
|
|
|
|
if (err) { |
|
|
|
|
toolTip(`Unable to load ${url}: ${err}`) |
|
|
|
|
if (cb) cb(err) |
|
|
|
|
} else { |
|
|
|
|
try { |
|
|
|
|
content = JSON.parse(content) |
|
|
|
|
async.eachOfSeries(content.sources, (value, file, callbackSource) => { |
|
|
|
|
var url = value.urls[0] // @TODO retrieve all other contents ?
|
|
|
|
|
self._deps.app.importExternal(url, (error, content) => { |
|
|
|
|
if (error) { |
|
|
|
|
toolTip(`Cannot retrieve the content of ${url}: ${error}`) |
|
|
|
|
} |
|
|
|
|
callbackSource() |
|
|
|
|
self._components.fileImport.import(url, |
|
|
|
|
(loadingMsg) => { toolTip(loadingMsg) }, |
|
|
|
|
(err, content, cleanUrl, type, url) => { |
|
|
|
|
if (err) { |
|
|
|
|
toolTip(`Unable to load ${url}: ${err}`) |
|
|
|
|
if (cb) cb(err) |
|
|
|
|
} else { |
|
|
|
|
self._deps.fileManager.setFile(type + '/' + cleanUrl, content) |
|
|
|
|
try { |
|
|
|
|
content = JSON.parse(content) |
|
|
|
|
async.eachOfSeries(content.sources, (value, file, callbackSource) => { |
|
|
|
|
var url = value.urls[0] // @TODO retrieve all other contents ?
|
|
|
|
|
self._components.fileImport.import(url, |
|
|
|
|
(loadingMsg) => { toolTip(loadingMsg) }, |
|
|
|
|
async (error, content, cleanUrl, type, url) => { |
|
|
|
|
if (error) { |
|
|
|
|
toolTip(`Cannot retrieve the content of ${url}: ${error}`) |
|
|
|
|
return callbackSource(`Cannot retrieve the content of ${url}: ${error}`) |
|
|
|
|
} else { |
|
|
|
|
try { |
|
|
|
|
await self._deps.fileManager.setFile(type + '/' + cleanUrl, content) |
|
|
|
|
callbackSource() |
|
|
|
|
} catch (e) { |
|
|
|
|
callbackSource(e.message) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
}, (error) => { |
|
|
|
|
if (cb) cb(error) |
|
|
|
|
}) |
|
|
|
|
}, (error) => { |
|
|
|
|
if (cb) cb(error) |
|
|
|
|
}) |
|
|
|
|
} catch (e) {} |
|
|
|
|
if (cb) cb() |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} catch (e) {} |
|
|
|
|
if (cb) cb() |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
setproviderurl (url, cb) { |
|
|
|
|
executionContext.setProviderFromEndpoint(url, 'web3', (error) => { |
|
|
|
|