Merge pull request #6113 from ethereum/positionalArgForYulRun

Allow positional arguments for yulrun.
This commit is contained in:
chriseth 2019-02-27 16:24:04 +01:00 committed by GitHub
commit 4f7f3bf689
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -76,12 +76,11 @@ pair<shared_ptr<Block>, shared_ptr<AsmAnalysisInfo>> parse(string const& _source
} }
} }
void interpret() void interpret(string const& _source)
{ {
string source = readStandardInput();
shared_ptr<Block> ast; shared_ptr<Block> ast;
shared_ptr<AsmAnalysisInfo> analysisInfo; shared_ptr<AsmAnalysisInfo> analysisInfo;
tie(ast, analysisInfo) = parse(source); tie(ast, analysisInfo) = parse(_source);
if (!ast || !analysisInfo) if (!ast || !analysisInfo)
return; return;
@ -120,13 +119,16 @@ Allowed options)",
po::options_description::m_default_line_length, po::options_description::m_default_line_length,
po::options_description::m_default_line_length - 23); po::options_description::m_default_line_length - 23);
options.add_options() options.add_options()
("help", "Show this help screen."); ("help", "Show this help screen.")
("input-file", po::value<vector<string>>(), "input file");
po::positional_options_description filesPositions;
filesPositions.add("input-file", -1);
po::variables_map arguments; po::variables_map arguments;
try try
{ {
po::command_line_parser cmdLineParser(argc, argv); po::command_line_parser cmdLineParser(argc, argv);
cmdLineParser.options(options); cmdLineParser.options(options).positional(filesPositions);
po::store(cmdLineParser.run(), arguments); po::store(cmdLineParser.run(), arguments);
} }
catch (po::error const& _exception) catch (po::error const& _exception)
@ -138,7 +140,17 @@ Allowed options)",
if (arguments.count("help")) if (arguments.count("help"))
cout << options; cout << options;
else else
interpret(); {
string input;
if (arguments.count("input-file"))
for (string path: arguments["input-file"].as<vector<string>>())
input += readFileAsString(path);
else
input = readStandardInput();
interpret(input);
}
return 0; return 0;
} }