fixed error message using warning style

This commit is contained in:
2025-06-26 22:36:50 +02:00
parent 600feeacd5
commit 86744ce8fa
5 changed files with 14 additions and 55 deletions
@@ -110,7 +110,7 @@ pub fn apply_format(input: &String, style: &String) -> Result<String> {
Ok(value) => value, Ok(value) => value,
Err(error) => return Err(error), Err(error) => return Err(error),
}; };
let style_reset: String = match parse_ansi_reset(style) { let style_reset: String = match parse_ansi_unset(style) {
Ok(value) => value, Ok(value) => value,
Err(error) => return Err(error), Err(error) => return Err(error),
}; };
@@ -258,7 +258,7 @@ pub fn parse_ansi_set(arg: &String) -> Result<String> {
/// input format is a quoted string (either double or single) /// input format is a quoted string (either double or single)
/// the style can be a combination of **one** color and /// the style can be a combination of **one** color and
/// one or more style options (bold, italic, underlined, strikethrough) /// one or more style options (bold, italic, underlined, strikethrough)
pub fn parse_ansi_reset(arg: &String) -> Result<String> { pub fn parse_ansi_unset(arg: &String) -> Result<String> {
let mut colors: Vec<String> = Vec::<String>::new(); let mut colors: Vec<String> = Vec::<String>::new();
let mut styles: Vec<String> = Vec::<String>::new(); let mut styles: Vec<String> = Vec::<String>::new();
@@ -48,43 +48,6 @@ pub fn gen_parse_from_map(config_name: &Ident, output_name: &Ident, assignments:
} }
} }
pub fn gen_to_ansi_sequences(fields: &Punctuated<Field, Comma>) -> TokenStream {
let mut conversions: TokenStream = TokenStream::new();
'fields: for field in fields.iter() {
let attr = &field.attrs;
let name = match &field.ident {
Some(value) => value,
// skip anonymous fields
None => continue 'fields,
};
for attribute in attr {
if let Attribute{ meta: Meta::Path( Path{segments: attr_name, ..} ), .. } = attribute {
match attr_name.first() {
Some(value) => if value.ident == "style_config" {
conversions.extend(quote! {
self.#name = match config_parser::parse_ansi_set(&self.#name) {
Ok(value) => value,
Err(_) => return Err(std::io::Error::other(format!("failed to convert '{}' to ansi escape sequence", self.#name))),
};
});
} else if value.ident == "nested_config" {
conversions.extend(quote! {
self.#name.to_ansi_sequences()?;
});
},
None => (),
}
}
}
};
quote!{
fn to_ansi_sequences(&mut self) -> std::io::Result<()> {
#conversions
Ok(())
}
}
}
pub fn gen_default(fields: &Punctuated<Field, Comma>) -> TokenStream { pub fn gen_default(fields: &Punctuated<Field, Comma>) -> TokenStream {
let mut defaults: TokenStream = TokenStream::new(); let mut defaults: TokenStream = TokenStream::new();
'fields: for field in fields.iter() { 'fields: for field in fields.iter() {
@@ -33,7 +33,6 @@ pub fn derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
let assignments: TokenStream = gen_config_assignments(fields, &config_name, &output_name); let assignments: TokenStream = gen_config_assignments(fields, &config_name, &output_name);
let func_parse_string: TokenStream = gen_parse_from_string(&config_name, &output_name, &assignments); let func_parse_string: TokenStream = gen_parse_from_string(&config_name, &output_name, &assignments);
let func_parse_map: TokenStream = gen_parse_from_map(&config_name, &output_name, &assignments); let func_parse_map: TokenStream = gen_parse_from_map(&config_name, &output_name, &assignments);
let func_to_ansi_sequences: TokenStream = gen_to_ansi_sequences(fields);
let func_default: TokenStream = gen_default(fields); let func_default: TokenStream = gen_default(fields);
let func_to_string: TokenStream = gen_to_string(fields); let func_to_string: TokenStream = gen_to_string(fields);
@@ -41,7 +40,6 @@ pub fn derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
impl #name { impl #name {
#func_parse_string #func_parse_string
#func_parse_map #func_parse_map
#func_to_ansi_sequences
#func_default #func_default
#func_to_string #func_to_string
} }
+2 -2
View File
@@ -124,7 +124,7 @@ impl Bookmarks {
Ok(value) => value, Ok(value) => value,
Err(error) => return Err(Error::other(format!("-- failed to conver home directory to string: {}", error.to_str().unwrap()))), Err(error) => return Err(Error::other(format!("-- failed to conver home directory to string: {}", error.to_str().unwrap()))),
}, },
None => return Err(Error::other("-- `stack_home_as_tilde` = true, but home directory can't be determined")), None => return Err(Error::other("-- `bookmarks_home_as_tilde` = true, but home directory can't be determined")),
}; };
path = path.replace(&home, "~"); path = path.replace(&home, "~");
} }
@@ -138,7 +138,7 @@ impl Bookmarks {
path = segments.join(&slash); path = segments.join(&slash);
name = apply_format(&name, &config.styles.bookmarks_name_style)?; name = apply_format(&name, &config.styles.bookmarks_name_style)?;
separator = apply_format(&separator, &config.styles.stack_separator_style)?; separator = apply_format(&separator, &config.styles.bookmarks_seperator_style)?;
} }
let mut line: String; let mut line: String;
+10 -12
View File
@@ -1,7 +1,7 @@
#![allow(unused)] #![allow(unused)]
use clap::builder::EnumValueParser; use clap::builder::EnumValueParser;
use config_parser::apply_format; use config_parser::{apply_format, parse_ansi_set, parse_ansi_unset};
use super::config::*; use super::config::*;
@@ -71,27 +71,25 @@ impl Output {
self.push_command(&"false".to_owned()); self.push_command(&"false".to_owned());
} }
let mut info: String = self.info.iter().map(|entry| format!("echo '{}'", entry)).collect::<Vec<String>>().join(" && ");
let mut warning: String = self.warning.iter().map(|entry| format!("echo '{}'", entry)).collect::<Vec<String>>().join(" && ");
let mut error: String = self.error.iter().map(|entry| format!("echo '{}'", entry)).collect::<Vec<String>>().join(" && ");
let mut command: String = self.command.join(" && ");
let mut output: Vec<String> = Vec::<String>::new(); let mut output: Vec<String> = Vec::<String>::new();
if !info.is_empty() { if !self.info.is_empty() {
let mut info: String = self.info.iter().map(|entry| format!("echo '{}'", entry)).collect::<Vec<String>>().join(" && ");
output.push(info); output.push(info);
} }
if !warning.is_empty() { if !self.warning.is_empty() {
warning = format!("echo '{}'", apply_format(&warning, &config.styles.error_style).unwrap()); let mut warning: String = self.warning.iter().map(|entry| apply_format(entry, &config.styles.warning_style).unwrap()).map(|entry| format!("echo '{}'", entry)).collect::<Vec<String>>().join(" && ");
output.push(warning); output.push(warning);
} }
if !error.is_empty() { if !self.error.is_empty() {
error = format!("echo '{}'", apply_format(&error, &config.styles.error_style).unwrap()); let mut error: String = self.error.iter().map(|entry| apply_format(entry, &config.styles.error_style).unwrap()).map(|entry| format!("echo '{}'", entry)).collect::<Vec<String>>().join(" && ");
output.push(error); output.push(error);
} }
if !command.is_empty() { if !self.command.is_empty() {
let mut command: String = self.command.join(" && ");
output.push(command); output.push(command);
} }
println!("{}", output.join(" && echo && ")); println!("{}", output.join(" && "));
} }
} }