diff --git a/engine/utils/cli_selection_utils.h b/engine/utils/cli_selection_utils.h index 0b18bdc9d..a923565f1 100644 --- a/engine/utils/cli_selection_utils.h +++ b/engine/utils/cli_selection_utils.h @@ -2,7 +2,7 @@ #include #include #include -#include "utils/logging_utils.h" +#include "utils/string_utils.h" namespace cli_selection_utils { const std::string indent = std::string(4, ' '); @@ -13,7 +13,8 @@ inline void PrintMenu( auto index{start_index}; for (const auto& option : options) { bool is_default = false; - if (default_option.has_value() && option == default_option.value()) { + if (default_option.has_value() && + string_utils::EqualsIgnoreCase(option, default_option.value())) { is_default = true; } std::string selection{std::to_string(index) + ". " + option + @@ -48,10 +49,13 @@ inline std::optional PrintModelSelection( // if selection is empty and default selection is inside availables, return default_selection if (selection.empty()) { - if (default_selection.has_value() && - std::find(availables.begin(), availables.end(), - default_selection.value()) != availables.end()) { - return default_selection; + if (default_selection.has_value()) { + for (const auto& available : availables) { + if (string_utils::EqualsIgnoreCase(available, + default_selection.value())) { + return available; + } + } } return std::nullopt; } diff --git a/engine/utils/string_utils.h b/engine/utils/string_utils.h index 4682623c1..1be4584d1 100644 --- a/engine/utils/string_utils.h +++ b/engine/utils/string_utils.h @@ -13,6 +13,11 @@ struct ParsePromptResult { std::string ai_prompt; }; +inline bool EqualsIgnoreCase(const std::string& a, const std::string& b) { + return std::equal(a.begin(), a.end(), b.begin(), b.end(), + [](char a, char b) { return tolower(a) == tolower(b); }); +} + inline ParsePromptResult ParsePrompt(const std::string& prompt) { auto& pt = prompt; ParsePromptResult result;