From 84be6be2cb1b37cc9d72203725b6fd2d7f6e3c1e Mon Sep 17 00:00:00 2001 From: Hugues Delorme Date: Mon, 24 Jul 2023 10:01:00 +0200 Subject: [PATCH] WIP7 --- src/app/main.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index 76e4b510..523e5163 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -22,6 +22,7 @@ #include "../gui/gui_application.h" #include "app_module.h" #include "cli_export.h" +#include "commands_help.h" #include "console.h" #include "document_tree_node_properties_providers.h" #include "filepath_conv.h" @@ -82,6 +83,7 @@ struct CommandLineArguments { std::vector listFilepathToExport; std::vector listFilepathToOpen; bool cliProgressReport = true; + bool showSystemInformation = false; }; // Provides customization of Qt message handler @@ -228,6 +230,12 @@ static CommandLineArguments processCommandLine() ); cmdParser.addOption(cmdCliNoProgress); + const QCommandLineOption cmdSysInfo( + QStringList{ "system-info" }, + Main::tr("Show detailed system information and quit") + ); + cmdParser.addOption(cmdSysInfo); + cmdParser.addPositionalArgument( Main::tr("files"), Main::tr("Files to open at startup, optionally"), @@ -268,6 +276,7 @@ static CommandLineArguments processCommandLine() args.includeDebugLogs = cmdParser.isSet(cmdDebugLogs); #endif args.cliProgressReport = !cmdParser.isSet(cmdCliNoProgress); + args.showSystemInformation = cmdParser.isSet(cmdSysInfo); return args; } @@ -396,7 +405,6 @@ static void initGui(GuiApplication* guiApp) if (!propForceOpenGlFallbackWidget && hasQGuiApplication) { // QOpenGL requires QGuiApplication const std::string strGlVersion = queryGlVersionString(); const QVersionNumber glVersion = parseSemanticVersionString(strGlVersion); - qInfo() << fmt::format("OpenGL v{}.{}", glVersion.majorVersion(), glVersion.minorVersion()).c_str(); if (!glVersion.isNull() && glVersion.majorVersion() >= 2) { // Requires at least OpenGL version >= 2.0 setFunctionCreateGraphicsDriver(&QOpenGLWidgetOccView::createCompatibleGraphicsDriver); IWidgetOccView::setCreator(&QOpenGLWidgetOccView::create); @@ -490,6 +498,11 @@ static int runApp(QCoreApplication* qtApp) appModule->properties()->retranslate(); // Process CLI + if (args.showSystemInformation) { + std::cout << Mayo::CommandSystemInformation::data().toStdString() << std::endl; + return 0; + } + if (!args.listFilepathToExport.empty()) { if (args.listFilepathToOpen.empty()) fnCriticalExit(Main::tr("No input files -> nothing to export")); @@ -581,7 +594,7 @@ int main(int argc, char* argv[]) QCoreApplication::setOrganizationDomain("www.fougue.pro"); QCoreApplication::setApplicationName("Mayo"); QCoreApplication::setApplicationVersion(QString::fromUtf8(Mayo::strVersion)); - const bool isAppCliMode = fnArgsContainAnyOf({ "-e", "--export", "-h", "--help", "-v", "--version" }); + const bool isAppCliMode = fnArgsContainAnyOf({ "-e", "--export", "-h", "--help", "-v", "--version", "--system-info" }); std::unique_ptr ptrApp( isAppCliMode ? new QCoreApplication(argc, argv) : new QApplication(argc, argv) ); @@ -595,7 +608,7 @@ int main(int argc, char* argv[]) #endif // Configure for CLI mode - if (isAppCliMode) { + if (isAppCliMode && fnArgsContainAnyOf({ "--system-info" })) { #if defined(Q_OS_WIN) && defined(NDEBUG) qAddPostRoutine(&Mayo::consoleSendEnterKey); // https://devblogs.microsoft.com/oldnewthing/20090101-00/?p=19643