diff options
Diffstat (limited to 'src/widgets/package_metadata.rs')
| -rw-r--r-- | src/widgets/package_metadata.rs | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/src/widgets/package_metadata.rs b/src/widgets/package_metadata.rs index ee46f62..d6c82cd 100644 --- a/src/widgets/package_metadata.rs +++ b/src/widgets/package_metadata.rs @@ -1,3 +1,4 @@ +use chrono::{DateTime, Utc}; use ratatui::{ Frame, layout::Rect, @@ -6,64 +7,69 @@ use ratatui::{ }; use crate::{ - gentoo::InstalledPackage, + gentoo::{ + InstalledPackage, + package::{Metadata, PackageKey}, + }, theme::Theme, widgets::helpers::{homepage_lines, human_size}, }; -pub fn render_package_metadata(frame: &mut Frame, area: Rect, pkg: Option<&InstalledPackage>) { - let Some(pkg) = pkg else { - return; - }; - +pub fn render_package_metadata( + frame: &mut Frame, + area: Rect, + pkg_version: &String, + metadata: &Metadata, + size: Option<usize>, + build_time: Option<DateTime<Utc>>, +) { let bold_style = Theme::title(); //Style::default().add_modifier(Modifier::BOLD); let maintainer = Line::from_iter([ Span::styled("Maintainer: ", bold_style), - Span::raw(pkg.metadata.maintainer.as_deref().unwrap_or("Unknown")), + Span::raw(metadata.maintainer.as_deref().unwrap_or("Unknown")), ]); let version = Line::from_iter([ Span::styled("Version: ", bold_style), - Span::raw(&pkg.version), + Span::raw(pkg_version), ]); let repository = Line::from_iter([ Span::styled("Repository: ", bold_style), - Span::raw(&pkg.metadata.repository), + Span::raw(&metadata.repository), ]); let license = Line::from_iter([ Span::styled("License: ", bold_style), - Span::raw(pkg.metadata.license.as_deref().unwrap_or("Unknown")), + Span::raw(metadata.license.as_deref().unwrap_or("Unknown")), ]); let description = Line::from_iter([ Span::styled("Description: ", bold_style), - Span::raw(pkg.metadata.description.as_deref().unwrap_or("Unknown")), + Span::raw(metadata.description.as_deref().unwrap_or("Unknown")), ]); - let size = Line::from_iter([ - Span::styled("Size: ", bold_style), - Span::raw(human_size(pkg.size)), - ]); + let mut lines = vec![maintainer, version, repository, license, description]; - let build_time = Line::from_iter([ - Span::styled("Build time: ", bold_style), - Span::raw(pkg.build_time.to_string()), - ]); + let mut homepage = homepage_lines(metadata, bold_style); + lines.append(&mut homepage); - let mut lines = vec![ - maintainer, - version, - repository, - build_time, - license, - description, - size, - ]; + if let Some(size) = size { + let size = Line::from_iter([ + Span::styled("Size: ", bold_style), + Span::raw(human_size(size)), + ]); + lines.push(size); + } - let mut homepage = homepage_lines(pkg, bold_style); - lines.append(&mut homepage); + if let Some(build_time) = build_time { + let build_time = Line::from_iter([ + Span::styled("Build time: ", bold_style), + Span::raw(build_time.to_string()), + ]); + + lines.push(build_time); + } let paragraph = Paragraph::new(lines) .block( |
