summaryrefslogtreecommitdiff
path: root/rola-cli/src/error/space.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-19 01:40:38 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-19 01:40:38 +0800
commit1e9c97c21f8a4e55420712b054895ff8b4f9a849 (patch)
treec6bd37889deb54c024f974f368a9a7d654cad822 /rola-cli/src/error/space.rs
parente078163c7cdbbf226c18d3e3afa7268a2878e18b (diff)
feat(rola-bucket): add bucket bind managementHEADmaster
Implement bucket bind CRUD operations and config loading, along with CLI integration for listing, setting, and removing bucket bindings.
Diffstat (limited to 'rola-cli/src/error/space.rs')
-rw-r--r--rola-cli/src/error/space.rs64
1 files changed, 64 insertions, 0 deletions
diff --git a/rola-cli/src/error/space.rs b/rola-cli/src/error/space.rs
new file mode 100644
index 0000000..fb0a560
--- /dev/null
+++ b/rola-cli/src/error/space.rs
@@ -0,0 +1,64 @@
+use mingling::{
+ Groupped,
+ macros::{chain, r_println, renderer},
+ res::ResExitCode,
+};
+use serde::Serialize;
+use space_system::SpaceError;
+
+use crate::{Next, error::ErrorIo, locale::errors::I18nSpaceError};
+
+pub const EC_SPACE_NOT_FOUND: i32 = 2600;
+pub const EC_SPACE_PATH_FORMAT: i32 = 2601;
+pub const EC_SPACE_REQUIRE_EMPTY_DIR: i32 = 2602;
+pub const EC_SPACE_CONFIG_ALREADY_EXIST: i32 = 2603;
+
+#[derive(Serialize, Groupped)]
+pub struct ErrorSpace {
+ pub error: SpaceError,
+}
+
+#[chain]
+pub fn handle_error_space(err: ErrorSpace) -> Next {
+ match err.error {
+ // Forward to ErrorIo
+ SpaceError::Io(error) => ErrorIo::from(error).to_render(),
+
+ _ => err.to_render(),
+ }
+}
+
+#[renderer]
+pub fn render_error_space(err: ErrorSpace, ec: &mut ResExitCode) {
+ match &err.error {
+ SpaceError::SpaceNotFound => {
+ r_println!("{}", I18nSpaceError::space_not_found().trim());
+ ec.exit_code = EC_SPACE_NOT_FOUND;
+ }
+ SpaceError::PathFormatError(_) => {
+ r_println!("{}", I18nSpaceError::path_format().trim());
+ ec.exit_code = EC_SPACE_PATH_FORMAT;
+ }
+ SpaceError::RequireEmptyDirectory => {
+ r_println!("{}", I18nSpaceError::require_empty_directory().trim());
+ ec.exit_code = EC_SPACE_REQUIRE_EMPTY_DIR;
+ }
+ SpaceError::ConfigFileAlreadyExist => {
+ r_println!("{}", I18nSpaceError::config_file_already_exist().trim());
+ ec.exit_code = EC_SPACE_CONFIG_ALREADY_EXIST;
+ }
+ SpaceError::Io(_) => {
+ // Forwarded to ErrorIo via handle_error_space chain
+ }
+ SpaceError::Other(_) => {
+ r_println!("{}", I18nSpaceError::space_not_found().trim());
+ ec.exit_code = EC_SPACE_NOT_FOUND;
+ }
+ }
+}
+
+impl From<SpaceError> for ErrorSpace {
+ fn from(error: SpaceError) -> Self {
+ Self { error }
+ }
+}