Added typo checks and upgraded to the latest version of Ratatui

This commit is contained in:
2023-08-08 10:50:07 -06:00
parent 2b9ddd0d1e
commit 718613d59f
8 changed files with 63 additions and 47 deletions
+4 -3
View File
@@ -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]
+1
View File
@@ -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
+3 -3
View File
@@ -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<B: Backend>(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)
+7 -7
View File
@@ -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<B: Backend>(
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)
+9 -9
View File
@@ -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<B: Backend>(f: &mut Frame<'_, B>, app: &App<'_>, content_a
let split = line.split(':').collect::<Vec<&str>>();
let title = format!("{}:", split[0]);
spans_info_default(title, split[1..].join(":"))
line_info_default(title, split[1..].join(":"))
})
.collect::<Vec<Spans<'_>>>(),
.collect::<Vec<Line<'_>>>(),
);
text.patch_style(determine_style_from_download_status(download_status));
@@ -524,7 +524,7 @@ fn draw_manual_search_confirm_prompt<B: Backend>(
};
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<B: Backend>(
.clone()
.unwrap_or_default()
.iter()
.map(|item| Spans::from(vec![Span::styled(format!("{}", item), style_primary())]))
.collect::<Vec<Spans<'_>>>();
spans_vec.append(&mut rejections_spans);
.map(|item| Line::from(vec![Span::styled(format!("{}", item), style_primary())]))
.collect::<Vec<Line<'_>>>();
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);
+10 -10
View File
@@ -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<B: Backend>(f: &mut Frame<'_, B>, area: Rect, offset: usize, string: &str) {
+15 -15
View File
@@ -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
);
}
+14
View File
@@ -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"