From 92773706b946533b07de9ade7be28e307954ae38 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Mon, 9 Nov 2020 17:17:04 -0500 Subject: don't attempt to parse the command line for launch, it fails in all sorts of ways don't try to time stuff before logging is initialized, an exception before initLogging() will crash because ~TimeThis() tries to log --- src/commandline.cpp | 58 ++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) (limited to 'src/commandline.cpp') diff --git a/src/commandline.cpp b/src/commandline.cpp index fd2fcb51..5e65424c 100644 --- a/src/commandline.cpp +++ b/src/commandline.cpp @@ -95,34 +95,34 @@ std::optional CommandLine::run(const std::wstring& line) if (c->name() == commandName) { // this is a command - // remove the command name itself - opts.erase(opts.begin()); + // remove the command name itself + opts.erase(opts.begin()); try { - // parse the the remainder of the command line according to the - // command's options - po::wcommand_line_parser parser(opts); + // legacy commands handle their own parsing, such as 'launch'; don't + // attempt to parse anything here + if (!c->legacy()) { + // parse the the remainder of the command line according to the + // command's options + po::wcommand_line_parser parser(opts); - auto co = c->allOptions(); - parser.options(co); + auto co = c->allOptions(); + parser.options(co); - if (c->allow_unregistered()) { - parser.allow_unregistered(); - } - - auto pos = c->positional(); - parser.positional(pos); + auto pos = c->positional(); + parser.positional(pos); - parsed = parser.run(); + parsed = parser.run(); - po::store(parsed, m_vm); - po::notify(m_vm); + po::store(parsed, m_vm); + po::notify(m_vm); - if (m_vm.count("help")) { - env::Console console; - std::cout << usage(c.get()) << "\n"; - return 0; + if (m_vm.count("help")) { + env::Console console; + std::cout << usage(c.get()) << "\n"; + return 0; + } } // run the command @@ -405,11 +405,6 @@ std::string Command::usageLine() const return name() + " " + getUsageLine(); } -bool Command::allow_unregistered() const -{ - return false; -} - po::options_description Command::allOptions() const { po::options_description d; @@ -435,6 +430,11 @@ po::positional_options_description Command::positional() const return getPositional(); } +bool Command::legacy() const +{ + return true; +} + std::string Command::getUsageLine() const { return "[options]"; @@ -522,14 +522,14 @@ std::optional CrashDumpCommand::doRun() } -bool LaunchCommand::allow_unregistered() const +Command::Meta LaunchCommand::meta() const { - return true; + return {"launch", "(internal, do not use)"}; } -Command::Meta LaunchCommand::meta() const +bool LaunchCommand::legacy() const { - return {"launch", "(internal, do not use)"}; + return true; } std::optional LaunchCommand::doRun() -- cgit v1.3.1