From c82ec168a18f6aeacfb855d1c1f2bf118d64ab3f Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Mon, 15 Sep 2025 12:48:41 -0500 Subject: [PATCH] ui main fixes --- repertory/repertory/include/ui/ui_main.hpp | 2 +- repertory/repertory/src/ui/ui_main.cpp | 154 +-------------------- 2 files changed, 6 insertions(+), 150 deletions(-) diff --git a/repertory/repertory/include/ui/ui_main.hpp b/repertory/repertory/include/ui/ui_main.hpp index 2ad0605f..efc68203 100644 --- a/repertory/repertory/include/ui/ui_main.hpp +++ b/repertory/repertory/include/ui/ui_main.hpp @@ -23,7 +23,7 @@ #define REPERTORY_INCLUDE_UI_MAIN_HPP_ namespace repertory::ui { -[[nodiscard]] auto ui_main(const std::vector &args) -> int +[[nodiscard]] auto ui_main(const std::vector &args) -> int; } // namespace repertory::ui #endif // REPERTORY_INCLUDE_UI_MAIN_HPP_ diff --git a/repertory/repertory/src/ui/ui_main.cpp b/repertory/repertory/src/ui/ui_main.cpp index f5dea6f8..ac463064 100644 --- a/repertory/repertory/src/ui/ui_main.cpp +++ b/repertory/repertory/src/ui/ui_main.cpp @@ -21,12 +21,15 @@ */ #include "ui/ui_main.hpp" +#include "cli/actions.hpp" #include "initialize.hpp" #include "types/repertory.hpp" #include "ui/mgmt_app_config.hpp" #include "ui/ui_server.hpp" #include "utils/cli_utils.hpp" #include "utils/error_utils.hpp" +#include "utils/file.hpp" +#include "utils/path.hpp" namespace repertory::ui { [[nodiscard]] auto ui_main(const std::vector &args) -> int { @@ -89,6 +92,7 @@ namespace repertory::ui { #if defined(_WIN32) server server(&config); run_ui(&server); + return 0; #else // !defined(_WIN32) repertory::project_cleanup(); @@ -108,152 +112,4 @@ namespace repertory::ui { }); #endif // defined(_WIN32) } -} // namespace repertory - -using namespace repertory; - -auto main(int argc, char **argv) -> int { -#if defined(PROJECT_ENABLE_BACKWARD_CPP) - static backward::SignalHandling sh; -#endif // defined(PROJECT_ENABLE_BACKWARD_CPP) - - if (not repertory::project_initialize()) { - repertory::project_cleanup(); - return -1; - } - - std::vector args; - { - auto args_span = std::span(argv, static_cast(argc)); - std::ranges::copy(args_span, std::back_inserter(args)); - } - - int ret{0}; - - if (argc == 1) { -#if defined(__APPLE__) - args.push_back("-ui"); -#else // !defined(__APPLE__) - args.push_back("-h"); -#endif // defined(__APPLE__) - } - - if (utils::cli::has_option(args, utils::cli::options::help_option)) { - cli::actions::help(args); - } else if (utils::cli::has_option(args, - utils::cli::options::version_option)) { - cli::actions::version(args); - } else if (utils::cli::has_option(args, utils::cli::options::ui_option)) { - ret = ui_main(args); - } else { - auto prov = utils::cli::get_provider_type_from_args(args); - - std::string data_directory; - auto res = utils::cli::parse_string_option( - args, utils::cli::options::data_directory_option, data_directory); - - std::string password; - res = (res == exit_code::success) - ? utils::cli::parse_string_option( - args, utils::cli::options::password_option, password) - : res; - - std::string user; - res = (res == exit_code::success) - ? utils::cli::parse_string_option( - args, utils::cli::options::user_option, user) - : res; - - std::string remote_host; - std::uint16_t remote_port{}; - std::string unique_id; - if (res == exit_code::success) { - if (prov == provider_type::remote) { - std::string data; - res = utils::cli::parse_string_option( - args, utils::cli::options::remote_mount_option, data); - if (res == exit_code::success) { - const auto parts = utils::string::split(data, ':', false); - if (parts.size() != 2) { - std::cerr << "Invalid syntax for host/port '-rm " - "host:port,--remote_mount host:port'" - << std::endl; - res = exit_code::invalid_syntax; - } else { - unique_id = parts.at(0U) + ':' + parts.at(1U); - remote_host = parts.at(0U); - try { - remote_port = utils::string::to_uint16(parts.at(1U)); - data_directory = - data_directory.empty() - ? utils::path::combine( - app_config::default_data_directory(prov), - { - utils::string::replace_copy(unique_id, ':', - '_'), - }) - : utils::path::absolute(data_directory); - } catch (const std::exception &e) { - std::cerr << (e.what() == nullptr ? "Unable to parse port" - : e.what()) - << std::endl; - res = exit_code::invalid_syntax; - } - } - } - } else { - std::string data; - res = utils::cli::parse_string_option( - args, utils::cli::options::name_option, data); - if (res == exit_code::success) { - unique_id = utils::string::trim(data); - if (unique_id.empty()) { - std::cerr << "Configuration name for '" - << app_config::get_provider_display_name(prov) - << "' was not provided" << std::endl; - res = exit_code::invalid_syntax; - } - } - - if (res == exit_code::success) { - data_directory = - data_directory.empty() - ? utils::path::combine( - app_config::default_data_directory(prov), {unique_id}) - : utils::path::absolute(data_directory); - } - } - } - - int mount_result{}; - if (res == exit_code::success) { - res = exit_code::option_not_found; - for (std::size_t idx = 0U; - (res == exit_code::option_not_found) && - (idx < utils::cli::options::option_list.size()); - idx++) { - try { - res = cli::actions::perform_action( - utils::cli::options::option_list[idx], args, data_directory, prov, - unique_id, user, password); - } catch (const std::exception &ex) { - res = exit_code::exception; - } catch (...) { - res = exit_code::exception; - } - } - - if (res == exit_code::option_not_found) { - res = cli::actions::mount(args, data_directory, mount_result, prov, - remote_host, remote_port, unique_id); - } - } - - ret = ((res == exit_code::mount_result) ? mount_result - : static_cast(res)); - } - - repertory::project_cleanup(); - return ret; -} -} +} // namespace repertory::ui