Abort CLI open on error

This commit is contained in:
louib 2021-08-01 13:38:20 -04:00 committed by Jonathan White
parent 0413662136
commit 5e68cd2fa2
2 changed files with 9 additions and 4 deletions

View File

@ -138,10 +138,12 @@ QSharedPointer<QCommandLineParser> Command::getCommandLineParser(const QStringLi
return {};
}
if (parser->positionalArguments().size() < positionalArguments.size()) {
err << QObject::tr("Missing positional argument(s).") << "\n\n";
err << getHelpText();
return {};
}
if (parser->positionalArguments().size() > (positionalArguments.size() + optionalArguments.size())) {
err << QObject::tr("Too many arguments provided.") << "\n\n";
err << getHelpText();
return {};
}

View File

@ -109,7 +109,7 @@ private:
};
#endif
void enterInteractiveMode(const QStringList& arguments)
int enterInteractiveMode(const QStringList& arguments)
{
auto& err = Utils::STDERR;
// Replace command list with interactive version
@ -118,7 +118,9 @@ void enterInteractiveMode(const QStringList& arguments)
Open openCmd;
QStringList openArgs(arguments);
openArgs.removeFirst();
openCmd.execute(openArgs);
if (openCmd.execute(openArgs) != EXIT_SUCCESS) {
return EXIT_FAILURE;
};
QScopedPointer<LineReader> reader;
#if defined(USE_READLINE)
@ -165,6 +167,8 @@ void enterInteractiveMode(const QStringList& arguments)
if (currentDatabase) {
currentDatabase->releaseData();
}
return EXIT_SUCCESS;
}
int main(int argc, char** argv)
@ -224,8 +228,7 @@ int main(int argc, char** argv)
QString commandName = parser.positionalArguments().at(0);
if (commandName == "open") {
enterInteractiveMode(arguments);
return EXIT_SUCCESS;
return enterInteractiveMode(arguments);
}
auto command = Commands::getCommand(commandName);