Merge pull request #1109 from ethereum/remix_sim_improvs
add bins & command line params for simulator and debuggerpull/5370/head
commit
84aa808216
@ -0,0 +1,112 @@ |
|||||||
|
#!/usr/bin/env node |
||||||
|
|
||||||
|
const program = require('commander') |
||||||
|
const version = require('../package.json').version |
||||||
|
|
||||||
|
program |
||||||
|
.command('version') |
||||||
|
.description("outputs version number") |
||||||
|
.action(() => { |
||||||
|
console.log(version) |
||||||
|
process.exit(0) |
||||||
|
}) |
||||||
|
|
||||||
|
program |
||||||
|
.command('help') |
||||||
|
.description("outputs usage information") |
||||||
|
.action(() => { |
||||||
|
program.help() |
||||||
|
process.exit(0) |
||||||
|
}) |
||||||
|
|
||||||
|
program |
||||||
|
.option('-f, --file [filename]', 'solidity filename to debug') |
||||||
|
.option('--tx [txHash]', 'transaction hash to debug') |
||||||
|
.option('--node [url]', 'node to connect to') |
||||||
|
.parse(process.argv) |
||||||
|
|
||||||
|
var CmdLine = require('../src/cmdline/index.js') |
||||||
|
|
||||||
|
var solc = require('solc') |
||||||
|
var fs = require('fs') |
||||||
|
|
||||||
|
var filename = 'test/sol/simple_storage.sol' |
||||||
|
var shortFilename = 'simple_storage.sol' |
||||||
|
|
||||||
|
var inputJson = { |
||||||
|
language: 'Solidity', |
||||||
|
sources: { |
||||||
|
}, |
||||||
|
settings: { |
||||||
|
optimizer: { |
||||||
|
enabled: true, |
||||||
|
runs: 200 |
||||||
|
}, |
||||||
|
outputSelection: { |
||||||
|
'*': { |
||||||
|
'': [ 'legacyAST' ], |
||||||
|
'*': [ 'abi', 'metadata', 'devdoc', 'userdoc', 'evm.legacyAssembly', 'evm.bytecode', 'evm.deployedBytecode', 'evm.methodIdentifiers', 'evm.gasEstimates' ] |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
inputJson.sources[shortFilename] = {content: fs.readFileSync(filename).toString()} |
||||||
|
|
||||||
|
console.log('compiling...') |
||||||
|
|
||||||
|
let compilationData = JSON.parse(solc.compileStandardWrapper(JSON.stringify(inputJson))) |
||||||
|
var compilation = {} |
||||||
|
compilation.data = compilationData |
||||||
|
compilation.source = { sources: inputJson.sources } |
||||||
|
|
||||||
|
var cmdLine = new CmdLine() |
||||||
|
cmdLine.connect('http', 'http://localhost:8545') |
||||||
|
cmdLine.loadCompilationResult(compilation) |
||||||
|
cmdLine.initDebugger() |
||||||
|
|
||||||
|
var tx = '0xf510c4f0b1d9ee262d7b9e9e87b4262f275fe029c2c733feef7dfa1e2b1e32aa' |
||||||
|
|
||||||
|
cmdLine.startDebug(tx, shortFilename) |
||||||
|
|
||||||
|
cmdLine.events.on('source', () => { |
||||||
|
cmdLine.getSource().forEach(console.dir) |
||||||
|
}) |
||||||
|
|
||||||
|
const repl = require('repl') |
||||||
|
|
||||||
|
repl.start({ |
||||||
|
prompt: '> ', |
||||||
|
eval: (cmd, context, filename, cb) => { |
||||||
|
let command = cmd.trim() |
||||||
|
if (command === 'next' || command === 'n') { |
||||||
|
cmdLine.stepOverForward(true) |
||||||
|
} |
||||||
|
if (command === 'previous' || command === 'p' || command === 'prev') { |
||||||
|
cmdLine.stepOverBack(true) |
||||||
|
} |
||||||
|
if (command === 'step' || command === 's') { |
||||||
|
cmdLine.stepIntoForward(true) |
||||||
|
} |
||||||
|
if (command === 'stepback' || command === 'sb') { |
||||||
|
cmdLine.stepIntoBack(true) |
||||||
|
} |
||||||
|
if (command === 'exit' || command === 'quit') { |
||||||
|
process.exit(0) |
||||||
|
} |
||||||
|
if (command === 'var local' || command === 'v l' || command === 'vl') { |
||||||
|
cmdLine.displayLocals() |
||||||
|
} |
||||||
|
if (command === 'var global' || command === 'v g' || command === 'vg') { |
||||||
|
cmdLine.displayGlobals() |
||||||
|
} |
||||||
|
if (command.split(' ')[0] === 'jump') { |
||||||
|
let stepIndex = parseInt(command.split(' ')[1], 10) |
||||||
|
cmdLine.jumpTo(stepIndex) |
||||||
|
} |
||||||
|
cb(null, '') |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
module.exports = cmdLine |
||||||
|
|
@ -1,3 +1,4 @@ |
|||||||
|
// TODO: this file shoudl be removed at some point
|
||||||
var CmdLine = require('./src/cmdline/index.js') |
var CmdLine = require('./src/cmdline/index.js') |
||||||
// var compilation = require('./compilation.json')
|
// var compilation = require('./compilation.json')
|
||||||
|
|
@ -1,4 +1,29 @@ |
|||||||
#!/usr/bin/env node |
#!/usr/bin/env node |
||||||
|
|
||||||
require('../src/server'); |
const program = require('commander') |
||||||
|
const version = require('../package.json').version |
||||||
|
|
||||||
|
program |
||||||
|
.command('version') |
||||||
|
.description("outputs version number") |
||||||
|
.action(() => { |
||||||
|
console.log(version) |
||||||
|
process.exit(0) |
||||||
|
}) |
||||||
|
|
||||||
|
program |
||||||
|
.command('help') |
||||||
|
.description("outputs usage information") |
||||||
|
.action(() => { |
||||||
|
program.help() |
||||||
|
process.exit(0) |
||||||
|
}) |
||||||
|
|
||||||
|
program |
||||||
|
.option('-p, --port [port]', 'specify port') |
||||||
|
.parse(process.argv) |
||||||
|
|
||||||
|
const Server = require('../src/server') |
||||||
|
const server = new Server() |
||||||
|
server.start(program.port || 8545) |
||||||
|
|
||||||
|
Loading…
Reference in new issue