diff options
| author | pablu <me@pablu.de> | 2026-06-02 18:49:48 +0200 |
|---|---|---|
| committer | pablu <me@pablu.de> | 2026-06-02 18:49:48 +0200 |
| commit | b547e6758c635682c94794e5c13070a73c918203 (patch) | |
| tree | 2ca030a7acbe436a304e6b87dd93deb0b2351909 /src/widgets/package_metadata.rs | |
| parent | afe649e0efc31fcd33a828e54bd6313cd37f1784 (diff) | |
wip: refactor architecture
Diffstat (limited to 'src/widgets/package_metadata.rs')
| -rw-r--r-- | src/widgets/package_metadata.rs | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/widgets/package_metadata.rs b/src/widgets/package_metadata.rs new file mode 100644 index 0000000..e4f83bb --- /dev/null +++ b/src/widgets/package_metadata.rs @@ -0,0 +1,75 @@ +use ratatui::{ + Frame, + layout::Rect, + text::{Line, Span}, + widgets::{Block, Borders, Paragraph, Wrap}, +}; + +use crate::{ + app::App, + gentoo::InstalledPackage, + theme::Theme, + widgets::helpers::{homepage_lines, human_size}, +}; + +pub fn render_package_metadata(frame: &mut Frame, area: Rect, pkg: &InstalledPackage) { + 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")), + ]); + + let version = Line::from_iter([ + Span::styled("Version: ", bold_style), + Span::raw(&pkg.version), + ]); + + let repository = Line::from_iter([ + Span::styled("Repository: ", bold_style), + Span::raw(&pkg.metadata.repository), + ]); + + let license = Line::from_iter([ + Span::styled("License: ", bold_style), + Span::raw(pkg.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")), + ]); + + let size = Line::from_iter([ + Span::styled("Size: ", bold_style), + Span::raw(human_size(pkg.size)), + ]); + + let build_time = Line::from_iter([ + Span::styled("Build time: ", bold_style), + Span::raw(pkg.build_time.to_string()), + ]); + + let mut lines = vec![ + maintainer, + version, + repository, + build_time, + license, + description, + size, + ]; + + let mut homepage = homepage_lines(pkg, bold_style); + lines.append(&mut homepage); + + let paragraph = Paragraph::new(lines) + .block( + Block::default() + .title("Metadata") + .borders(Borders::ALL) + .border_style(Theme::block()), + ) + .wrap(Wrap { trim: false }); + + frame.render_widget(paragraph, area); +} |
