From 8cbba8dc8900b98e23e6ee38d6f02537ba936c1c Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Tue, 30 Jun 2026 06:01:32 +0800 Subject: refactor(rola-cli): replace GeneralRenderer with StructuralRenderer and use public modules --- rola-cli/src/bucket_mgr/bind.rs | 7 ++----- rola-cli/src/bucket_mgr/bind/chains.rs | 34 +++++++++++++++---------------- rola-cli/src/bucket_mgr/bind/renderers.rs | 2 +- rola-cli/src/bucket_mgr/config.rs | 3 +++ rola-cli/src/bucket_mgr/creation.rs | 8 +++----- 5 files changed, 25 insertions(+), 29 deletions(-) create mode 100644 rola-cli/src/bucket_mgr/config.rs (limited to 'rola-cli/src/bucket_mgr') diff --git a/rola-cli/src/bucket_mgr/bind.rs b/rola-cli/src/bucket_mgr/bind.rs index fefebd6..a334258 100644 --- a/rola-cli/src/bucket_mgr/bind.rs +++ b/rola-cli/src/bucket_mgr/bind.rs @@ -5,11 +5,8 @@ use mingling::{ use rorolala::bucket::bind::BucketBind; use serde::Serialize; -mod chains; -pub use chains::*; - -mod renderers; -pub use renderers::*; +pub mod chains; +pub mod renderers; pub const EC_BUCKET_BIND_INDEX_NOT_PROVIDED: i32 = 251; pub const EC_BUCKET_BIND_INDEX_NOT_FOUND: i32 = 252; diff --git a/rola-cli/src/bucket_mgr/bind/chains.rs b/rola-cli/src/bucket_mgr/bind/chains.rs index 881e5ba..b8037e2 100644 --- a/rola-cli/src/bucket_mgr/bind/chains.rs +++ b/rola-cli/src/bucket_mgr/bind/chains.rs @@ -1,16 +1,20 @@ use crate::{ Next, - bucket_mgr::{ + bucket_mgr::bind::{ EntryBucketBind, ErrorBucketBindIndexNotFound, ErrorBucketBindIndexNotProvided, ResultAllBucketBind, ResultBucketOperated, ResultEnumBucketOperation::{self, Set}, ResultOneBucketBind, StateBucketBindListAll, StateBucketBindListSpecified, StateBucketBindRemove, StateBucketBindSet, }, - error::{ErrorRequireOverwrite, ErrorSpace}, + error::require_overwrite::ErrorRequireOverwrite, + error::space::ErrorSpace, res::{bucket::ResBucketWithoutProtocol, overwrite::ResOverwrite}, }; -use mingling::{LazyRes, macros::chain}; +use mingling::{ + Groupped, LazyRes, + macros::{chain, route}, +}; use rorolala::bucket::{self}; use shared_functions::info; @@ -55,10 +59,10 @@ pub fn handle_state_bucket_bind_set( let (index, url) = set.inner; let bucket_space_ref = &bucket.get_ref().space; - let exist = match bucket::bind::check_bucket_bind_exists(bucket_space_ref, index) { - Ok(exists) => exists, - Err(e) => return ErrorSpace::from(e).to_chain(), - }; + let exist = route!(bucket::bind::check_bucket_bind_exists( + bucket_space_ref, + index + )); // When the bind already exists but overwrite is not specified // Dispatch to ErrorRequireOverwrite @@ -88,9 +92,7 @@ pub fn handle_state_bucket_bind_remove( let index = remove.inner; let bucket_space_ref = &bucket.get_ref().space; - if let Err(space_error) = bucket::bind::remove_bucket_bind(bucket_space_ref, index) { - return ErrorSpace::from(space_error).to_chain(); - } + route!(bucket::bind::remove_bucket_bind(bucket_space_ref, index)); ResultBucketOperated { operation: ResultEnumBucketOperation::Remove, @@ -107,10 +109,9 @@ pub fn handle_state_bucket_bind_list_specified( ) -> Next { let index = index.inner; let bucket_space_ref = &bucket.get_ref().space; - let bind_info = match bucket::bind::read_bucket_bind(bucket_space_ref, index) { - Err(e) => return ErrorSpace::from(e).to_chain(), - Ok(None) => return ErrorBucketBindIndexNotFound::new(index).to_render(), - Ok(Some(r)) => r, + let bind_info = match route!(bucket::bind::read_bucket_bind(bucket_space_ref, index)) { + None => return ErrorBucketBindIndexNotFound::new(index).to_render(), + Some(r) => r, }; ResultOneBucketBind { @@ -127,10 +128,7 @@ pub fn handle_state_bucket_bind_list_all( ) -> Next { let bucket_space_ref = &bucket.get_ref().space; info!("Reading all bucket binds from space"); - let bind_list = match bucket::bind::read_bucket_binds(bucket_space_ref) { - Err(e) => return ErrorSpace::from(e).to_chain(), - Ok(r) => r, - }; + let bind_list = route!(bucket::bind::read_bucket_binds(bucket_space_ref)); info!("Read {} bucket binds", bind_list.len()); ResultAllBucketBind { bind_list }.to_render() } diff --git a/rola-cli/src/bucket_mgr/bind/renderers.rs b/rola-cli/src/bucket_mgr/bind/renderers.rs index 18ae092..cf12b7f 100644 --- a/rola-cli/src/bucket_mgr/bind/renderers.rs +++ b/rola-cli/src/bucket_mgr/bind/renderers.rs @@ -4,7 +4,7 @@ use mingling::{ }; use crate::{ - bucket_mgr::{ + bucket_mgr::bind::{ EC_BUCKET_BIND_INDEX_NOT_FOUND, EC_BUCKET_BIND_INDEX_NOT_PROVIDED, ErrorBucketBindIndexNotFound, ErrorBucketBindIndexNotProvided, ResultAllBucketBind, ResultBucketOperated, ResultEnumBucketOperation, ResultOneBucketBind, diff --git a/rola-cli/src/bucket_mgr/config.rs b/rola-cli/src/bucket_mgr/config.rs new file mode 100644 index 0000000..b30620b --- /dev/null +++ b/rola-cli/src/bucket_mgr/config.rs @@ -0,0 +1,3 @@ +use mingling::macros::dispatcher; + +dispatcher!("bucket.config"); diff --git a/rola-cli/src/bucket_mgr/creation.rs b/rola-cli/src/bucket_mgr/creation.rs index 2394228..fd794e8 100644 --- a/rola-cli/src/bucket_mgr/creation.rs +++ b/rola-cli/src/bucket_mgr/creation.rs @@ -10,7 +10,7 @@ use rorolala::bucket::{Bucket, NoProtocol}; use serde::Serialize; use space_system::{Space, SpaceError, SpaceRoot, find_space_root_with}; -use crate::{Next, error::ErrorIo, locale::I18nBucketManager, res::current_dir::ResCurrentDir}; +use crate::{Next, error::io::ErrorIo, locale::I18nBucketManager, res::current_dir::ResCurrentDir}; pub const EC_BUCKET_CREATE_DIR_NOT_EMPTY: i32 = 2400; pub const EC_BUCKET_PATH_NOT_PROVIDED: i32 = 2401; @@ -46,7 +46,7 @@ pub fn handle_bucket_init(_args: EntryBucketInit, cwd: &mut ResCurrentDir) -> Ne pub fn handle_bucket_create(args: EntryBucketCreate) -> Next { let join = route! { args.pick_or_route::((), - ErrorBucketPathNotProvided::new(()).to_render() + ErrorBucketPathNotProvided::new(()) ).unpack() }; StateBucketCreationPrecheck::new(join).to_chain() @@ -80,9 +80,7 @@ pub fn handle_state_bucket_creation_precheck(create: StateBucketCreationPrecheck pub fn handle_state_bucket_creation(create: StateBucketCreation) -> Next { let path = create.inner; - route! { - create_dir_all(&path).map_err(|e| ErrorIo::from(e).to_render()) - }; + route!(create_dir_all(&path).map_err(|e| ErrorIo::from(e))); // Use a protocol-less Bucket as a temporary Space for initialization let bucket_space = Space::>::new(Bucket::::new_local()); -- cgit