diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-06-19 03:11:26 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-06-19 03:11:26 +0800 |
| commit | d36acf196f7475a91550cc64c9c9a545adb65c50 (patch) | |
| tree | 282ad7138c3b479af9f99834b07ecd03151a37e8 /rola-cli/src/bucket_mgr/bind/renderers.rs | |
| parent | 1e9c97c21f8a4e55420712b054895ff8b4f9a849 (diff) | |
refactor(bucket-mgr): extract bind chains and renderers into modules
Diffstat (limited to 'rola-cli/src/bucket_mgr/bind/renderers.rs')
| -rw-r--r-- | rola-cli/src/bucket_mgr/bind/renderers.rs | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/rola-cli/src/bucket_mgr/bind/renderers.rs b/rola-cli/src/bucket_mgr/bind/renderers.rs new file mode 100644 index 0000000..18ae092 --- /dev/null +++ b/rola-cli/src/bucket_mgr/bind/renderers.rs @@ -0,0 +1,94 @@ +use mingling::{ + macros::{r_println, renderer}, + res::ResExitCode, +}; + +use crate::{ + bucket_mgr::{ + EC_BUCKET_BIND_INDEX_NOT_FOUND, EC_BUCKET_BIND_INDEX_NOT_PROVIDED, + ErrorBucketBindIndexNotFound, ErrorBucketBindIndexNotProvided, ResultAllBucketBind, + ResultBucketOperated, ResultEnumBucketOperation, ResultOneBucketBind, + }, + locale::I18nBucketManager, + output::{ansi_control::Colorize, display::markdown}, +}; + +// Result Renderers + +fn format_bind(idx: u8) -> String { + format!("BIND_{:03}", idx).bold().white().to_string() +} + +fn format_bind_to(idx: u8, url: impl AsRef<str>) -> String { + format!( + "{} {} {}", + // BIND + format_bind(idx), + // --> + "-->".bright_yellow(), + // DIR + format!("\"{}\"", url.as_ref()).bold().cyan() + ) +} + +#[renderer] +pub fn render_result_one_bucket_bind(result: ResultOneBucketBind) { + r_println!("{}", format_bind_to(result.index, result.url.trim())); +} + +#[renderer] +pub fn render_result_all_bucket_bind(result: ResultAllBucketBind) { + let list: Vec<String> = result + .bind_list + .iter() + .map(|b| format_bind_to(b.get_index(), b.get_url().trim())) + .collect(); + for item in list { + r_println!("{}", item); + } +} + +#[renderer] +pub fn render_result_bucket_operated(result: ResultBucketOperated) { + let index = result.index; + let url = result.url.unwrap_or("".to_string()); + match result.operation { + ResultEnumBucketOperation::Set => { + r_println!( + " {} {}", + "+++".bold().bright_green(), + format_bind_to(index, url.trim()) + ) + } + ResultEnumBucketOperation::Remove => { + r_println!(" {} {}", "---".bold().bright_red(), format_bind(index)) + } + _ => {} + } +} + +// Error Renderers + +#[renderer] +pub fn render_error_bucket_bind_index_not_provided( + _err: ErrorBucketBindIndexNotProvided, + ec: &mut ResExitCode, +) { + r_println!( + "{}", + markdown(I18nBucketManager::error_bind_index_not_provided().trim()) + ); + ec.exit_code = EC_BUCKET_BIND_INDEX_NOT_PROVIDED; +} + +#[renderer] +pub fn render_error_bucket_bind_index_not_found( + err: ErrorBucketBindIndexNotFound, + ec: &mut ResExitCode, +) { + r_println!( + "{}", + markdown(I18nBucketManager::error_bind_index_not_found(err.info.to_string()).trim()) + ); + ec.exit_code = EC_BUCKET_BIND_INDEX_NOT_FOUND; +} |
