aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/app.rs6
-rw-r--r--src/gentoo/package.rs4
-rw-r--r--src/gentoo/portage.rs36
-rw-r--r--src/gentoo/portage_loader.rs78
-rw-r--r--src/screens/installed_packages.rs20
-rw-r--r--src/widgets/use_flags.rs4
6 files changed, 71 insertions, 77 deletions
diff --git a/src/app.rs b/src/app.rs
index aa6091c..c423e50 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -58,12 +58,14 @@ impl App {
match self.view {
ViewState::InstalledPackages => {
self.installed_package_screen
- .draw(frame, rest, &self.portage)
+ .draw(frame, rest, &self.portage);
}
ViewState::Dashboard => {
self.dashboard_screen.draw(frame, rest, &self.portage);
}
- _ => frame.render_widget(Text::from("NOT IMPLEMENTED"), rest),
+ ViewState::AvailablePackages => {
+ frame.render_widget(Text::from("NOT IMPLEMENTED"), rest);
+ }
}
}
diff --git a/src/gentoo/package.rs b/src/gentoo/package.rs
index d1596f7..1d41b8c 100644
--- a/src/gentoo/package.rs
+++ b/src/gentoo/package.rs
@@ -56,11 +56,11 @@ pub struct InstalledPackage {
pub struct Package {
pub atom: PackageKey,
- pub versions: Vec<Version>,
+ pub versions: Vec<PackageVersion>,
}
#[derive(Debug, Clone)]
-pub struct Version {
+pub struct PackageVersion {
pub version: String,
pub metadata: Metadata,
diff --git a/src/gentoo/portage.rs b/src/gentoo/portage.rs
index 9b13867..779f746 100644
--- a/src/gentoo/portage.rs
+++ b/src/gentoo/portage.rs
@@ -7,50 +7,50 @@ use crate::gentoo::{
#[derive(Debug, Default)]
pub struct Portage {
- installed_packages: Vec<InstalledPackage>,
- world_packages: HashSet<PackageKey>,
- available_packages: Vec<Package>,
+ installed: Vec<InstalledPackage>,
+ world_set: HashSet<PackageKey>,
+ available: Vec<Package>,
}
impl Portage {
// TODO: Do this differently to allow backgrounded loading
pub fn new(
- installed_packages: Vec<InstalledPackage>,
- world_packages: HashSet<PackageKey>,
- available_packages: Vec<Package>,
+ installed: Vec<InstalledPackage>,
+ world_set: HashSet<PackageKey>,
+ available: Vec<Package>,
) -> Self {
Self {
- installed_packages,
- world_packages,
- available_packages,
+ installed,
+ world_set,
+ available,
}
}
pub fn installed_packages(&self) -> Vec<&InstalledPackage> {
- self.installed_packages.iter().collect()
+ self.installed.iter().collect()
}
pub fn world_packages_len(&self) -> usize {
- self.world_packages.len()
+ self.world_set.len()
}
pub fn world_packages(&self) -> Vec<&InstalledPackage> {
- self.installed_packages
+ self.installed
.iter()
- .filter(|pkg| self.world_packages.contains(&pkg.atom))
+ .filter(|pkg| self.world_set.contains(&pkg.atom))
.collect()
}
pub fn get_installed_package(&self, index: usize) -> Option<&InstalledPackage> {
- if self.installed_packages.len() > index && index > 0 {
- return Some(&self.installed_packages[index]);
+ if self.installed.len() > index && index > 0 {
+ return Some(&self.installed[index]);
}
None
}
pub fn get_installed_package_key(&self, key: &PackageKey) -> Option<&InstalledPackage> {
- let pkg = self.installed_packages.iter().find(|pkg| pkg.atom == *key);
+ let pkg = self.installed.iter().find(|pkg| pkg.atom == *key);
if let Some(pkg) = pkg {
return Some(pkg);
}
@@ -59,10 +59,10 @@ impl Portage {
}
pub fn total_installed_size(&self) -> usize {
- self.installed_packages.iter().map(|p| p.size).sum()
+ self.installed.iter().map(|p| p.size).sum()
}
pub(crate) fn installed_packages_len(&self) -> usize {
- self.installed_packages.len()
+ self.installed.len()
}
}
diff --git a/src/gentoo/portage_loader.rs b/src/gentoo/portage_loader.rs
index 792e53d..5e47c23 100644
--- a/src/gentoo/portage_loader.rs
+++ b/src/gentoo/portage_loader.rs
@@ -10,7 +10,7 @@ use quick_xml::{Reader, events::Event};
use crate::gentoo::{
InstalledPackage, UseFlag,
- package::{Metadata, Package, PackageKey, Version},
+ package::{Metadata, Package, PackageKey, PackageVersion},
};
fn split_pkg(input: &str) -> (&str, &str) {
@@ -68,7 +68,7 @@ fn extract_maintainer(path: &Path) -> color_eyre::Result<Option<String>> {
Ok(None)
}
-fn parse_cache_file(content: String) -> HashMap<String, String> {
+fn parse_cache_file(content: &str) -> HashMap<String, String> {
content
.lines()
.filter_map(|line| {
@@ -137,72 +137,64 @@ pub fn load_available_packages() -> color_eyre::Result<Vec<Package>> {
let version_file = fs::read_to_string(pkg.path()).wrap_err_with(|| {
format!(
- "failed to read version_file for {}/{}-{} in repo {}",
- cat_name, pkg_name, pkg_version, repo_name
+ "failed to read version_file for {cat_name}/{pkg_name}-{pkg_version} in repo {repo_name}"
)
})?;
- let data = parse_cache_file(version_file);
+ let data = parse_cache_file(&version_file);
let homepages: Vec<String> = data
.get("HOMEPAGE")
- .and_then(|s| {
- Some(
- s.split_whitespace()
- .map(std::string::ToString::to_string)
- .collect(),
- )
+ .map(|s| {
+ s.split_whitespace()
+ .map(std::string::ToString::to_string)
+ .collect()
})
- .unwrap_or(vec![]);
+ .unwrap_or_default();
let keywords: Vec<String> = data
.get("KEYWORDS")
- .and_then(|s| {
- Some(
- s.split_whitespace()
- .map(std::string::ToString::to_string)
- .collect(),
- )
+ .map(|s| {
+ s.split_whitespace()
+ .map(std::string::ToString::to_string)
+ .collect()
})
- .unwrap_or(vec![]);
+ .unwrap_or_default();
let iuse: Vec<UseFlag> = data
.get("IUSE")
- .and_then(|s| {
- Some(
- s.split_whitespace()
- .map(|original_iuse| {
- let iuse =
- original_iuse.strip_prefix("+").unwrap_or(original_iuse);
+ .map(|s| {
+ s.split_whitespace()
+ .map(|original_iuse| {
+ let iuse = original_iuse.strip_prefix("+").unwrap_or(original_iuse);
- UseFlag {
- name: iuse.to_string(),
- default: iuse != original_iuse,
- }
- })
- .collect(),
- )
+ UseFlag {
+ name: iuse.to_string(),
+ default: iuse != original_iuse,
+ }
+ })
+ .collect()
})
- .unwrap_or(vec![]);
+ .unwrap_or_default();
let repo_path = PathBuf::from("/var/db/repos/")
- .join(&repo_name)
+ .join(repo_name)
.join(&cat_name)
.join(pkg_name)
.join("metadata.xml");
let maintainer = extract_maintainer(&repo_path).unwrap_or(None);
- let version = Version {
+ let version = PackageVersion {
version: pkg_version.to_string(),
metadata: Metadata {
- maintainer: maintainer,
+ maintainer,
description: data.get("DESCRIPTION").cloned(),
homepage: homepages,
license: data.get("LICENSE").cloned(),
repository: repo_name.to_string(),
},
- keywords: keywords,
- iuse: iuse,
+ keywords,
+ iuse,
};
let pkg_key = PackageKey {
@@ -256,7 +248,7 @@ pub fn load_installed_packages() -> color_eyre::Result<Vec<InstalledPackage>> {
let use_flags_file = fs::read_to_string(pkg.path().join("USE"))?;
let enabled_use_flags: HashSet<String> = use_flags_file
.split_whitespace()
- .map(|s| s.to_string())
+ .map(ToString::to_string)
.collect();
let iuse_flags_file = fs::read_to_string(pkg.path().join("IUSE"))?;
@@ -322,18 +314,18 @@ pub fn load_installed_packages() -> color_eyre::Result<Vec<InstalledPackage>> {
};
v.push(InstalledPackage {
- atom: atom,
+ atom,
version: pkg_version.to_string(),
build_time,
slot: 0,
metadata: Metadata {
maintainer,
description,
- homepage: homepage,
+ homepage,
license,
- repository: repository,
+ repository,
},
- enabled_use_flags: enabled_use_flags,
+ enabled_use_flags,
iuse: use_flags,
size,
});
diff --git a/src/screens/installed_packages.rs b/src/screens/installed_packages.rs
index 4526d38..cc2f3cb 100644
--- a/src/screens/installed_packages.rs
+++ b/src/screens/installed_packages.rs
@@ -39,7 +39,7 @@ impl Default for SearchPopup {
.textarea
.set_cursor_line_style(Style::default());
- return search_popup;
+ search_popup
}
}
@@ -62,12 +62,12 @@ impl SearchPopup {
.map(|(i, _)| i)
.collect();
- if indexes.len() >= 1 {
- self.result = Some(indexes[0]);
- return Some(indexes[0]);
- } else {
+ if indexes.is_empty() {
self.result = None;
- return None;
+ None
+ } else {
+ self.result = Some(indexes[0]);
+ Some(indexes[0])
}
}
}
@@ -122,9 +122,9 @@ impl Default for InstalledPackagesScreen {
let mut list_state = ListState::default();
list_state.select(Some(0));
Self {
- list_state: list_state,
+ list_state,
filter_state: FilterState::Unfiltered,
- search_popup: Default::default(),
+ search_popup: SearchPopup::default(),
}
}
}
@@ -201,7 +201,7 @@ impl Screen for InstalledPackagesScreen {
.border_style(Theme::block())
.style(Style::default().bg(Theme::BG));
- if let Some(_) = self.search_popup.result {
+ if self.search_popup.result.is_some() {
popup_block = popup_block.border_style(Theme::success());
} else {
popup_block = popup_block.border_style(Theme::error());
@@ -246,7 +246,7 @@ impl Screen for InstalledPackagesScreen {
self.list_state.select(Some(index));
}
}
- };
+ }
} else {
match key.modifiers {
KeyModifiers::CONTROL => match key.code {
diff --git a/src/widgets/use_flags.rs b/src/widgets/use_flags.rs
index 59e5781..5017160 100644
--- a/src/widgets/use_flags.rs
+++ b/src/widgets/use_flags.rs
@@ -1,9 +1,9 @@
use ratatui::{
Frame,
layout::Rect,
- style::{Color, Modifier},
+ style::Modifier,
text::{Line, Span},
- widgets::{Block, Borders, List, ListItem, ListState, Paragraph},
+ widgets::{Block, Borders, Paragraph},
};
use crate::{gentoo::InstalledPackage, theme::Theme};