use mingling::{ macros::{r_println, renderer}, res::ResExitCode, }; use crate::{ bucket_mgr::bind::{ 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) -> 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 = 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; }