diff --git a/data/gnome_extra_list.txt b/data/gnome_extra_list.txt index a68bc99..70a598f 100644 --- a/data/gnome_extra_list.txt +++ b/data/gnome_extra_list.txt @@ -1,8 +1,18 @@ gnome-firmware gnome-tweaks gnome-extensions-app +gnome-sound-recorder +gnome-usage +decibels +fragments gnome-shell-extension-appindicator gnome-shell-extension-dash-to-dock gnome-shell-extension-caffeine gnome-shell-extension-gsconnect -gnome-shell-extension-system-monitor \ No newline at end of file +gnome-shell-extension-system-monitor + +# Unwanted packages +-rhythmbox +-transmission-gtk +-gnome-tour +-yelp \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 1d2d228..6b281e8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -238,15 +238,15 @@ fn manage_list(list: String, remove: bool) -> Result<()> { let packages = list .lines() .map(|line| line.trim()) - .filter(|line| !line.is_empty()) + .filter(|line| !line.is_empty() && !line.starts_with('#') && !line.starts_with('-')) .collect::>(); let mut dnf_cmd = std::process::Command::new("dnf"); if remove { - log::info!("Removing common list..."); + log::info!("Removing wanted list's packages..."); dnf_cmd.arg("remove"); } else { - log::info!("Installing common list..."); + log::info!("Installing wanted list's packages..."); dnf_cmd.arg("install").arg("--allowerasing"); } @@ -256,6 +256,32 @@ fn manage_list(list: String, remove: bool) -> Result<()> { dnf_cmd.status()?; + let packages = list + .lines() + .map(|line| line.trim()) + .filter(|line| !line.is_empty() && !line.starts_with('#') && line.starts_with('-')) + .map(|line| line.trim_start_matches('-').trim()) + .collect::>(); + + if packages.is_empty() { + return Ok(()); + } + + let mut dnf_cmd = std::process::Command::new("dnf"); + if remove { + log::info!("Re-installing unwanted list's packages..."); + dnf_cmd.arg("install").arg("--allowerasing"); + } else { + log::info!("Removing unwanted list's packages..."); + dnf_cmd.arg("remove"); + } + + packages.iter().for_each(|package| { + dnf_cmd.arg(package); + }); + + dnf_cmd.status()?; + Ok(()) }