From f3719ea361a9ca4268543a812b39a20c61228e9b Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Tue, 30 Sep 2025 10:36:23 -0500 Subject: [PATCH] [add remove mount capabilities to cli and ui #62] [refactor cli messages and error handling] --- CHANGELOG.md | 1 + .../include/platform/unix_platform.hpp | 6 +- .../include/platform/win32_platform.hpp | 4 +- .../librepertory/include/types/repertory.hpp | 3 +- .../librepertory/include/utils/cli_utils.hpp | 2 + .../src/platform/unix_platform.cpp | 14 ++-- .../src/platform/win32_platform.cpp | 39 +++++---- repertory/repertory/include/cli/actions.hpp | 81 ++++++++++++++----- .../repertory/include/cli/check_version.hpp | 42 +++++----- repertory/repertory/include/cli/common.hpp | 31 +++++++ .../repertory/include/cli/display_config.hpp | 35 +++++--- .../include/cli/drive_information.hpp | 31 ++++--- repertory/repertory/include/cli/get.hpp | 72 ++++++++++------- .../include/cli/get_directory_items.hpp | 30 ++++--- .../repertory/include/cli/get_item_info.hpp | 30 ++++--- .../include/cli/get_pinned_files.hpp | 21 ++--- repertory/repertory/include/cli/help.hpp | 5 +- repertory/repertory/include/cli/mount.hpp | 18 +++-- .../repertory/include/cli/open_files.hpp | 38 ++++----- repertory/repertory/include/cli/pin_file.hpp | 30 ++++--- .../repertory/include/cli/pinned_status.hpp | 30 ++++--- repertory/repertory/include/cli/remove.hpp | 28 ++++--- repertory/repertory/include/cli/set.hpp | 81 ++++++++++--------- repertory/repertory/include/cli/status.hpp | 25 +++--- repertory/repertory/include/cli/test.hpp | 12 ++- repertory/repertory/include/cli/unmount.hpp | 39 ++++----- .../repertory/include/cli/unpin_file.hpp | 32 ++++---- repertory/repertory/src/ui/ui_server.cpp | 3 +- 28 files changed, 451 insertions(+), 332 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5161633a..5c5b5884 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ * Fixed intermittent client hang on remote mount server disconnect * Implemented POSIX-compliant `unlink()` with FUSE `hard_remove` * Open handles remain valid after `unlink()` +* Refactored CLI messages and error handling to use common methods ## v2.0.7-release diff --git a/repertory/librepertory/include/platform/unix_platform.hpp b/repertory/librepertory/include/platform/unix_platform.hpp index fe81efc6..988f0e4f 100644 --- a/repertory/librepertory/include/platform/unix_platform.hpp +++ b/repertory/librepertory/include/platform/unix_platform.hpp @@ -30,7 +30,8 @@ class i_provider; class lock_data final { public: - lock_data(provider_type prov, std::string_view unique_id); + lock_data(std::string data_directory, provider_type prov, + std::string_view unique_id); lock_data(const lock_data &) = delete; lock_data(lock_data &&) = delete; @@ -41,6 +42,7 @@ public: ~lock_data(); private: + std::string data_directory; std::string mutex_id_; private: @@ -48,7 +50,7 @@ private: int lock_status_{EWOULDBLOCK}; private: - [[nodiscard]] static auto get_state_directory() -> std::string; + [[nodiscard]] auto get_state_directory() -> std::string; [[nodiscard]] auto get_lock_data_file() const -> std::string; diff --git a/repertory/librepertory/include/platform/win32_platform.hpp b/repertory/librepertory/include/platform/win32_platform.hpp index 7da2c3c3..c629e0b0 100644 --- a/repertory/librepertory/include/platform/win32_platform.hpp +++ b/repertory/librepertory/include/platform/win32_platform.hpp @@ -30,7 +30,8 @@ class i_provider; class lock_data final { public: - explicit lock_data(provider_type prov, std::string unique_id); + explicit lock_data(std::string data_directory, provider_type prov, + std::string unique_id); lock_data(const lock_data &) = delete; lock_data(lock_data &&) = delete; @@ -40,6 +41,7 @@ public: auto operator=(lock_data &&) -> lock_data & = delete; private: + std::string dir_id_; std::string mutex_id_; HANDLE mutex_handle_{INVALID_HANDLE_VALUE}; DWORD mutex_state_{WAIT_FAILED}; diff --git a/repertory/librepertory/include/types/repertory.hpp b/repertory/librepertory/include/types/repertory.hpp index b9dc2a64..0b8f259e 100644 --- a/repertory/librepertory/include/types/repertory.hpp +++ b/repertory/librepertory/include/types/repertory.hpp @@ -207,7 +207,8 @@ enum class exit_code : std::int32_t { exception = -20, provider_offline = -21, ui_failed = -22, - remove_failed = -23 + remove_failed = -23, + mount_not_found = -24, }; enum http_error_codes : std::int32_t { diff --git a/repertory/librepertory/include/utils/cli_utils.hpp b/repertory/librepertory/include/utils/cli_utils.hpp index 3152e0e7..b34cb387 100644 --- a/repertory/librepertory/include/utils/cli_utils.hpp +++ b/repertory/librepertory/include/utils/cli_utils.hpp @@ -49,6 +49,7 @@ inline const option pin_file_option = {"-pf", "--pin_file"}; inline const option pinned_status_option = {"-ps", "--pinned_status"}; inline const option password_option = {"-pw", "--password"}; inline const option remote_mount_option = {"-rm", "--remote_mount"}; +inline const option remove_option = {"-rp", "--remove"}; inline const option set_option = {"-set", "--set"}; inline const option status_option = {"-status", "--status"}; inline const option test_option = {"-test", "--test"}; @@ -80,6 +81,7 @@ inline const std::vector