watcher-ts/packages/tracing-client/src/cli/get-call-trace.ts
2021-06-18 17:04:02 +05:30

53 lines
1.2 KiB
TypeScript

import fs from 'fs';
import yargs from 'yargs';
import { TracingClient } from '../tracing';
(async () => {
const argv = await yargs.parserConfiguration({
'parse-numbers': false
}).options({
providerUrl: {
type: 'string',
require: true,
demandOption: true,
default: 'http://localhost:8545',
describe: 'ETH JSON-RPC provider URL'
},
block: {
type: 'string',
require: true,
demandOption: true,
describe: 'Block hash or number'
},
txFile: {
type: 'string',
require: true,
demandOption: true,
describe: 'File with tx data for call tracing'
},
tracer: {
type: 'string',
describe: 'The tracer to use'
},
tracerFile: {
type: 'string',
"describe": 'File with custom tracing JS code'
}
}).argv;
let tracer = argv.tracer;
const tracerFile = argv.tracerFile;
if (tracerFile) {
tracer = fs.readFileSync(tracerFile).toString("utf-8");
}
const txData = JSON.parse(fs.readFileSync(argv.txFile).toString("utf-8"));
const tracingClient = new TracingClient(argv.providerUrl);
const result = await tracingClient.getCallTrace(argv.block, txData, tracer);
console.log(JSON.stringify(result, null, 2));
})();