From 718613d59feeb38a9501e700837cbe7ccdddf454 Mon Sep 17 00:00:00 2001 From: Dark-Alex-17 Date: Tue, 8 Aug 2023 10:50:07 -0600 Subject: [PATCH] Added typo checks and upgraded to the latest version of Ratatui --- Cargo.toml | 7 +++--- README.md | 1 + src/ui/mod.rs | 6 ++--- src/ui/radarr_ui/collection_details_ui.rs | 14 +++++------ src/ui/radarr_ui/movie_details_ui.rs | 18 +++++++------- src/ui/utils.rs | 20 +++++++-------- src/ui/utils_tests.rs | 30 +++++++++++------------ typos.toml | 14 +++++++++++ 8 files changed, 63 insertions(+), 47 deletions(-) create mode 100644 typos.toml diff --git a/Cargo.toml b/Cargo.toml index 90717ba..594d3f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ repository = "https://github.com/Dark-Alex-17/managarr" homepage = "https://github.com/Dark-Alex-17/managarr" readme = "README.md" edition = "2021" +rust-version = "1.65.0" [dependencies] anyhow = "1.0.68" @@ -28,10 +29,10 @@ reqwest = { version = "0.11.14", features = ["json"] } serde_yaml = "0.9.16" serde_json = "1.0.91" serde = { version = "1.0", features = ["derive"] } -strum = {version = "0.24", features = ["derive"] } -strum_macros = "0.24" +strum = {version = "0.25.0", features = ["derive"] } +strum_macros = "0.25.0" tokio = { version = "1.24.1", features = ["full"] } -tui = { version = "0.20.1", package = "ratatui" } +tui = { version = "0.21.0", package = "ratatui", features = ["all-widgets"] } urlencoding = "2.1.2" [dev-dependencies] diff --git a/README.md b/README.md index b77b170..9e27a1d 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Managarr assumes reasonable defaults to connect to each service (i.e. Radarr is but all servers will require you to input the API token. The configuration file is located somewhere different for each OS + ### Linux ``` $HOME/.config/managarr/config.yml diff --git a/src/ui/mod.rs b/src/ui/mod.rs index 2a0a5df..a7bc4c8 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -4,7 +4,7 @@ use std::rc::Rc; use tui::backend::Backend; use tui::layout::{Alignment, Constraint, Rect}; use tui::style::Modifier; -use tui::text::{Span, Spans, Text}; +use tui::text::{Line, Span, Text}; use tui::widgets::Paragraph; use tui::widgets::Row; use tui::widgets::Table; @@ -81,7 +81,7 @@ fn draw_header_row(f: &mut Frame<'_, B>, app: &mut App<'_>, area: Re .server_tabs .tabs .iter() - .map(|tab| Spans::from(Span::styled(tab.title, style_default_bold()))) + .map(|tab| Line::from(Span::styled(tab.title, style_default_bold()))) .collect(); let tabs = Tabs::new(titles) .block(logo_block()) @@ -273,7 +273,7 @@ fn draw_tabs<'a, B: Backend>( let titles = tab_state .tabs .iter() - .map(|tab_route| Spans::from(Span::styled(tab_route.title, style_default_bold()))) + .map(|tab_route| Line::from(Span::styled(tab_route.title, style_default_bold()))) .collect(); let tabs = Tabs::new(titles) .block(block) diff --git a/src/ui/radarr_ui/collection_details_ui.rs b/src/ui/radarr_ui/collection_details_ui.rs index b9ec533..0c35629 100644 --- a/src/ui/radarr_ui/collection_details_ui.rs +++ b/src/ui/radarr_ui/collection_details_ui.rs @@ -11,7 +11,7 @@ use crate::models::Route; use crate::ui::radarr_ui::collections_ui::draw_collections; use crate::ui::utils::{ borderless_block, get_width_from_percentage, layout_block_top_border_with_title, - spans_info_primary, style_default, style_help, style_primary, title_block, title_style, + line_info_primary, style_default, style_help, style_primary, title_block, title_style, vertical_chunks_with_margin, }; use crate::ui::{draw_large_popup_over, draw_small_popup_over, draw_table, DrawUi, TableProps}; @@ -106,24 +106,24 @@ pub(super) fn draw_collection_details( let minimum_availability = collection_selection.minimum_availability.to_display_str(); let collection_description = Text::from(vec![ - spans_info_primary( + line_info_primary( "Overview: ".to_owned(), collection_selection.overview.clone().unwrap_or_default(), ), - spans_info_primary( + line_info_primary( "Root Folder Path: ".to_owned(), collection_selection .root_folder_path .clone() .unwrap_or_default(), ), - spans_info_primary("Quality Profile: ".to_owned(), quality_profile), - spans_info_primary( + line_info_primary("Quality Profile: ".to_owned(), quality_profile), + line_info_primary( "Minimum Availability: ".to_owned(), minimum_availability.to_owned(), ), - spans_info_primary("Monitored: ".to_owned(), monitored.to_owned()), - spans_info_primary("Search on Add: ".to_owned(), search_on_add.to_owned()), + line_info_primary("Monitored: ".to_owned(), monitored.to_owned()), + line_info_primary("Search on Add: ".to_owned(), search_on_add.to_owned()), ]); let description_paragraph = Paragraph::new(collection_description) diff --git a/src/ui/radarr_ui/movie_details_ui.rs b/src/ui/radarr_ui/movie_details_ui.rs index b152c45..691ce03 100644 --- a/src/ui/radarr_ui/movie_details_ui.rs +++ b/src/ui/radarr_ui/movie_details_ui.rs @@ -3,7 +3,7 @@ use std::iter; use tui::backend::Backend; use tui::layout::{Alignment, Constraint, Rect}; use tui::style::{Modifier, Style}; -use tui::text::{Span, Spans, Text}; +use tui::text::{Line, Span, Text}; use tui::widgets::{Cell, ListItem, Paragraph, Row, Wrap}; use tui::Frame; @@ -14,7 +14,7 @@ use crate::models::Route; use crate::ui::radarr_ui::library_ui::draw_library; use crate::ui::utils::{ borderless_block, get_width_from_percentage, layout_block_bottom_border, layout_block_top_border, - spans_info_default, style_awaiting_import, style_bold, style_default, style_failure, + line_info_default, style_awaiting_import, style_bold, style_default, style_failure, style_primary, style_success, style_warning, vertical_chunks, }; use crate::ui::{ @@ -216,9 +216,9 @@ fn draw_movie_details(f: &mut Frame<'_, B>, app: &App<'_>, content_a let split = line.split(':').collect::>(); let title = format!("{}:", split[0]); - spans_info_default(title, split[1..].join(":")) + line_info_default(title, split[1..].join(":")) }) - .collect::>>(), + .collect::>>(), ); text.patch_style(determine_style_from_download_status(download_status)); @@ -524,7 +524,7 @@ fn draw_manual_search_confirm_prompt( }; if current_selection.rejected { - let mut spans_vec = vec![Spans::from(vec![Span::styled( + let mut lines_vec = vec![Line::from(vec![Span::styled( "Rejection reasons: ", style_primary().add_modifier(Modifier::BOLD), )])]; @@ -533,11 +533,11 @@ fn draw_manual_search_confirm_prompt( .clone() .unwrap_or_default() .iter() - .map(|item| Spans::from(vec![Span::styled(format!("• {}", item), style_primary())])) - .collect::>>(); - spans_vec.append(&mut rejections_spans); + .map(|item| Line::from(vec![Span::styled(format!("• {}", item), style_primary())])) + .collect::>>(); + lines_vec.append(&mut rejections_spans); - let content_paragraph = Paragraph::new(spans_vec) + let content_paragraph = Paragraph::new(lines_vec) .block(borderless_block()) .wrap(Wrap { trim: false }) .alignment(Alignment::Left); diff --git a/src/ui/utils.rs b/src/ui/utils.rs index be1db7d..4c72819 100644 --- a/src/ui/utils.rs +++ b/src/ui/utils.rs @@ -2,7 +2,7 @@ use std::rc::Rc; use tui::backend::Backend; use tui::layout::{Alignment, Constraint, Direction, Layout, Rect}; use tui::style::{Color, Modifier, Style}; -use tui::text::{Span, Spans, Text}; +use tui::text::{Line, Span, Text}; use tui::widgets::{Block, BorderType, Borders, LineGauge, Paragraph, Wrap}; use tui::{symbols, Frame}; @@ -120,24 +120,24 @@ pub fn borderless_block<'a>() -> Block<'a> { Block::default() } -pub fn spans_info_with_style<'a>( +pub fn line_info_with_style<'a>( title: String, content: String, title_style: Style, content_style: Style, -) -> Spans<'a> { - Spans::from(vec![ +) -> Line<'a> { + Line::from(vec![ Span::styled(title, title_style), Span::styled(content, content_style), ]) } -pub fn spans_info_default<'a>(title: String, content: String) -> Spans<'a> { - spans_info_with_style(title, content, style_bold(), style_default()) +pub fn line_info_default<'a>(title: String, content: String) -> Line<'a> { + line_info_with_style(title, content, style_bold(), style_default()) } -pub fn spans_info_primary<'a>(title: String, content: String) -> Spans<'a> { - spans_info_with_style( +pub fn line_info_primary<'a>(title: String, content: String) -> Line<'a> { + line_info_with_style( title, content, style_primary().add_modifier(Modifier::BOLD), @@ -256,7 +256,7 @@ pub fn line_gauge_with_title(title: &str, ratio: f64) -> LineGauge<'_> { .gauge_style(Style::default().fg(COLOR_CYAN)) .line_set(symbols::line::THICK) .ratio(ratio) - .label(Spans::from(format!("{:.0}%", ratio * 100.0))) + .label(Line::from(format!("{:.0}%", ratio * 100.0))) } pub fn line_gauge_with_label(title: &str, ratio: f64) -> LineGauge<'_> { @@ -265,7 +265,7 @@ pub fn line_gauge_with_label(title: &str, ratio: f64) -> LineGauge<'_> { .gauge_style(Style::default().fg(COLOR_CYAN)) .line_set(symbols::line::THICK) .ratio(ratio) - .label(Spans::from(format!("{}: {:.0}%", title, ratio * 100.0))) + .label(Line::from(format!("{}: {:.0}%", title, ratio * 100.0))) } pub fn show_cursor(f: &mut Frame<'_, B>, area: Rect, offset: usize, string: &str) { diff --git a/src/ui/utils_tests.rs b/src/ui/utils_tests.rs index 0c27702..f44385a 100644 --- a/src/ui/utils_tests.rs +++ b/src/ui/utils_tests.rs @@ -3,15 +3,15 @@ mod test { use pretty_assertions::assert_eq; use tui::layout::{Alignment, Constraint, Direction, Layout, Rect}; use tui::style::{Color, Modifier, Style}; - use tui::text::{Span, Spans}; + use tui::text::{Line, Span}; use tui::widgets::{Block, BorderType, Borders}; use crate::ui::utils::{ borderless_block, centered_rect, get_width_from_percentage, horizontal_chunks, horizontal_chunks_with_margin, layout_block, layout_block_bottom_border, layout_block_top_border, layout_block_top_border_with_title, layout_block_with_title, - layout_with_constraints, logo_block, spans_info_default, spans_info_primary, - spans_info_with_style, style_block_highlight, style_bold, style_default, style_default_bold, + layout_with_constraints, line_info_default, line_info_primary, line_info_with_style, + logo_block, style_block_highlight, style_bold, style_default, style_default_bold, style_failure, style_help, style_highlight, style_primary, style_secondary, style_success, style_system_function, style_unmonitored, style_warning, title_block, title_block_centered, title_style, vertical_chunks, vertical_chunks_with_margin, @@ -177,32 +177,32 @@ mod test { } #[test] - fn test_spans_info_with_style() { + fn test_line_info_with_style() { let first_style = Style::default() .fg(Color::DarkGray) .add_modifier(Modifier::BOLD); let second_style = Style::default() .fg(Color::LightYellow) .add_modifier(Modifier::ITALIC); - let expected_spans = Spans::from(vec![ + let expected_lines = Line::from(vec![ Span::styled("title".to_owned(), first_style), Span::styled("content".to_owned(), second_style), ]); assert_eq!( - spans_info_with_style( + line_info_with_style( "title".to_owned(), "content".to_owned(), first_style, second_style ), - expected_spans + expected_lines ); } #[test] - fn test_spans_info_default() { - let expected_spans = Spans::from(vec![ + fn test_line_info_default() { + let expected_line = Line::from(vec![ Span::styled( "title".to_owned(), Style::default().add_modifier(Modifier::BOLD), @@ -211,14 +211,14 @@ mod test { ]); assert_eq!( - spans_info_default("title".to_owned(), "content".to_owned()), - expected_spans + line_info_default("title".to_owned(), "content".to_owned()), + expected_line ); } #[test] - fn test_spans_info_primary() { - let expected_spans = Spans::from(vec![ + fn test_line_info_primary() { + let expected_line = Line::from(vec![ Span::styled( "title".to_owned(), Style::default() @@ -229,8 +229,8 @@ mod test { ]); assert_eq!( - spans_info_primary("title".to_owned(), "content".to_owned()), - expected_spans + line_info_primary("title".to_owned(), "content".to_owned()), + expected_line ); } diff --git a/typos.toml b/typos.toml new file mode 100644 index 0000000..d7912c7 --- /dev/null +++ b/typos.toml @@ -0,0 +1,14 @@ +# configuration for https://github.com/crate-ci/typos + +[default.extend-words] +ratatui = "ratatui" +managarr = "managarr" +radarr = "radarr" +sonarr = "sonarr" +servarr = "servarr" +readarr = "readarr" +lidarr = "lidarr" +whisparr = "whisparr" +bazarr = "bazarr" +prowlarr = "prowlarr" +tautulli = "tautulli"