mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
chore: do not use C++ 20 std::ranges.
This commit is contained in:
@ -30,8 +30,6 @@ QString const hyphenatedWindowFlag = "--no-window"; ///< The no-window command-l
|
||||
QString const hyphenatedSoftwareRendererFlag = "--software-renderer"; ///< The 'software-renderer' command-line flag. enable software rendering for a single execution
|
||||
QString const hyphenatedSetSoftwareRendererFlag = "--set-software-renderer"; ///< The 'set-software-renderer' command-line flag. Software rendering will be used for all subsequent executions of the application.
|
||||
QString const hyphenatedSetHardwareRendererFlag = "--set-hardware-renderer"; ///< The 'set-hardware-renderer' command-line flag. Hardware rendering will be used for all subsequent executions of the application.
|
||||
QString const sessionIDFlag = "session-id";
|
||||
QString const hyphenatedSessionIDFlag = "--" + sessionIDFlag;
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \brief Parse the log level from the command-line arguments.
|
||||
@ -50,23 +48,6 @@ Log::Level parseLogLevel(QStringList const &args) {
|
||||
return level;
|
||||
}
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \brief Return the most recent sessionID parsed in command-line arguments
|
||||
///
|
||||
/// \param[in] args The command-line arguments.
|
||||
/// \return The most recent sessionID in the list. If the list is empty, a new sessionID is created.
|
||||
//****************************************************************************************************************************************************
|
||||
QString mostRecentSessionID(QStringList const& args) {
|
||||
QStringList const sessionIDs = parseGoCLIStringArgument(args, {sessionIDFlag});
|
||||
if (sessionIDs.isEmpty()) {
|
||||
return newSessionID();
|
||||
}
|
||||
|
||||
return std::ranges::max(sessionIDs, [](QString const &lhs, QString const &rhs) -> bool {
|
||||
return sessionIDToDateTime(lhs) < sessionIDToDateTime(rhs);
|
||||
});
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
|
||||
|
||||
#include <bridgepp/CLI/CLIUtils.h>
|
||||
#include <bridgepp/SessionID/SessionID.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
|
||||
@ -76,3 +77,12 @@ TEST(CLI, cliArgsToStringList) {
|
||||
EXPECT_EQ(cliArgsToStringList(argc,argv), strList);
|
||||
EXPECT_EQ(cliArgsToStringList(0, nullptr), QStringList {});
|
||||
}
|
||||
|
||||
TEST(CLI, mostRecentSessionID) {
|
||||
QStringList const sessionIDs { "20220411_155931148", "20230411_155931148", "20240411_155931148" };
|
||||
EXPECT_EQ(mostRecentSessionID({ hyphenatedSessionIDFlag, sessionIDs[0] }), sessionIDs[0]);
|
||||
EXPECT_EQ(mostRecentSessionID({ hyphenatedSessionIDFlag, sessionIDs[1], hyphenatedSessionIDFlag, sessionIDs[2] }), sessionIDs[2]);
|
||||
EXPECT_EQ(mostRecentSessionID({ hyphenatedSessionIDFlag, sessionIDs[2], hyphenatedSessionIDFlag, sessionIDs[1] }), sessionIDs[2]);
|
||||
EXPECT_EQ(mostRecentSessionID({ hyphenatedSessionIDFlag, sessionIDs[1], hyphenatedSessionIDFlag, sessionIDs[2], hyphenatedSessionIDFlag,
|
||||
sessionIDs[0] }), sessionIDs[2]);
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
// along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
#include "CLIUtils.h"
|
||||
|
||||
#include "../SessionID/SessionID.h"
|
||||
|
||||
namespace bridgepp {
|
||||
|
||||
@ -89,4 +89,20 @@ QStringList cliArgsToStringList(int argc, char **argv) {
|
||||
return result;
|
||||
}
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] args The command-line arguments.
|
||||
/// \return The most recent sessionID in the list. If the list is empty, a new sessionID is created.
|
||||
//****************************************************************************************************************************************************
|
||||
QString mostRecentSessionID(QStringList const& args) {
|
||||
QStringList const sessionIDs = parseGoCLIStringArgument(args, {sessionIDFlag});
|
||||
if (sessionIDs.isEmpty()) {
|
||||
return newSessionID();
|
||||
}
|
||||
|
||||
return *std::max_element(sessionIDs.constBegin(), sessionIDs.constEnd(), [](QString const &lhs, QString const &rhs) -> bool {
|
||||
return sessionIDToDateTime(lhs) < sessionIDToDateTime(rhs);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
} // namespace bridgepp
|
||||
|
||||
@ -23,6 +23,7 @@ namespace bridgepp {
|
||||
QStringList stripStringParameterFromCommandLine(QString const ¶mName, QStringList const &commandLineParams); ///< Remove a string parameter from a list of command-line parameters.
|
||||
QStringList parseGoCLIStringArgument(QStringList const &args, QStringList const ¶mNames); ///< Parse a command-line string argument as expected by go's CLI package.
|
||||
QStringList cliArgsToStringList(int argc, char **argv); ///< Converts C-style command-line arguments to a string list.
|
||||
QString mostRecentSessionID(QStringList const& args); ///< Returns the most recent sessionID parsed in command-line arguments.
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -32,6 +32,10 @@ QString const dateTimeFormat = "yyyyMMdd_hhmmsszzz"; ///< The format string for
|
||||
namespace bridgepp {
|
||||
|
||||
|
||||
QString const sessionIDFlag = "session-id";
|
||||
QString const hyphenatedSessionIDFlag = "--" + sessionIDFlag;
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \return a new session ID based on the current local date/time
|
||||
//****************************************************************************************************************************************************
|
||||
|
||||
@ -23,6 +23,10 @@
|
||||
namespace bridgepp {
|
||||
|
||||
|
||||
extern QString const sessionIDFlag; ///< The sessionID command-line flag (without hyphens)
|
||||
extern QString const hyphenatedSessionIDFlag; ///< The sessionID command-line flag (with two hyphens)
|
||||
|
||||
|
||||
QString newSessionID(); ///< Create a new sessions
|
||||
QDateTime sessionIDToDateTime(QString const &sessionID); ///< Parse the date/time from a sessionID.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user