aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/package_metadata.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/package_metadata.rs')
-rw-r--r--src/widgets/package_metadata.rs66
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(