diff --git a/data/amd_list.txt b/data/amd_list.txt index 87d6953..3736b3b 100644 --- a/data/amd_list.txt +++ b/data/amd_list.txt @@ -1,18 +1,18 @@ -libva -libva-utils -gstreamer1-vaapi -ffmpeg -mesa-dri-drivers -mesa-va-drivers-freeworld -mesa-vdpau-drivers-freeworld -mesa-va-drivers-freeworld.i686 -mesa-vdpau-drivers-freeworld.i686 -rocm-opencl -rocminfo -rocm-clinfo -rocm-hip -rocm-runtime -rocm-smi -rocm-hip-devel -amd-gpu-firmware -amd-ucode-firmware \ No newline at end of file ++libva ++libva-utils ++gstreamer1-vaapi ++ffmpeg ++mesa-dri-drivers ++mesa-va-drivers-freeworld ++mesa-vdpau-drivers-freeworld ++mesa-va-drivers-freeworld.i686 ++mesa-vdpau-drivers-freeworld.i686 ++rocm-opencl ++rocminfo ++rocm-clinfo ++rocm-hip ++rocm-runtime ++rocm-smi ++rocm-hip-devel ++amd-gpu-firmware ++amd-ucode-firmware \ No newline at end of file diff --git a/data/common_list.txt b/data/common_list.txt index 13f58f1..c81b54d 100644 --- a/data/common_list.txt +++ b/data/common_list.txt @@ -1,42 +1,42 @@ -@development-tools -@virtualization -@multimedia -@sound-and-video -vim -papirus-icon-theme -jetbrains-mono-fonts-all -rsms-inter-fonts -rsms-inter-vf-fonts -fish -rustup -git -htop -btop -fastfetch -inxi -dejavu-fonts-all -liberation-fonts -liberation-narrow-fonts -google-noto-emoji-fonts -google-noto-color-emoji-fonts -google-noto-sans-fonts -google-roboto* -mozilla-fira* -adobe-source-code* -adobe-source-sans-pro-fonts -fontawesome-fonts-all -google-droid-fonts-all -bitstream-vera-fonts-all -fira-code-fonts -cascadia-fonts-all -intel-one-mono-fonts -curl -gstreamer1-plugins-base -gstreamer1-plugins-good -gstreamer1-plugins-bad-free -gstreamer1-plugins-good-extras -gstreamer1-plugins-bad-free-extras -gstreamer1-plugins-ugly-free -gstreamer1-plugin-libav -gstreamer1-plugin-openh264 -https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm \ No newline at end of file ++@development-tools ++@virtualization ++@multimedia ++@sound-and-video ++vim ++papirus-icon-theme ++jetbrains-mono-fonts-all ++rsms-inter-fonts ++rsms-inter-vf-fonts ++fish ++rustup ++git ++htop ++btop ++fastfetch ++inxi ++dejavu-fonts-all ++liberation-fonts ++liberation-narrow-fonts ++google-noto-emoji-fonts ++google-noto-color-emoji-fonts ++google-noto-sans-fonts ++google-roboto* ++mozilla-fira* ++adobe-source-code* ++adobe-source-sans-pro-fonts ++fontawesome-fonts-all ++google-droid-fonts-all ++bitstream-vera-fonts-all ++fira-code-fonts ++cascadia-fonts-all ++intel-one-mono-fonts ++curl ++gstreamer1-plugins-base ++gstreamer1-plugins-good ++gstreamer1-plugins-bad-free ++gstreamer1-plugins-good-extras ++gstreamer1-plugins-bad-free-extras ++gstreamer1-plugins-ugly-free ++gstreamer1-plugin-libav ++gstreamer1-plugin-openh264 ++https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm \ No newline at end of file diff --git a/data/firmware_list.txt b/data/firmware_list.txt index 812b516..743b802 100644 --- a/data/firmware_list.txt +++ b/data/firmware_list.txt @@ -1,5 +1,5 @@ -alsa-firmware -alsa-sof-firmware -linux-firmware -realtek-firmware -uhd-firmware \ No newline at end of file ++alsa-firmware ++alsa-sof-firmware ++linux-firmware ++realtek-firmware ++uhd-firmware \ No newline at end of file diff --git a/data/gnome_extra_list.txt b/data/gnome_extra_list.txt index 70a598f..8c75118 100644 --- a/data/gnome_extra_list.txt +++ b/data/gnome_extra_list.txt @@ -1,17 +1,15 @@ -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 - -# Unwanted packages ++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 -rhythmbox -transmission-gtk -gnome-tour diff --git a/data/intel_list.txt b/data/intel_list.txt index f2e66c0..2eb15df 100644 --- a/data/intel_list.txt +++ b/data/intel_list.txt @@ -1,17 +1,17 @@ -intel-media-driver -libva-intel-driver -libva-intel-media-driver -libva -libva-utils -gstreamer1-vaapi -ffmpeg -intel-gpu-tools -mesa-dri-drivers -mesa-va-drivers-freeworld -mesa-vdpau-drivers-freeworld -mesa-va-drivers-freeworld.i686 -mesa-vdpau-drivers-freeworld.i686 -intel-audio-firmware -intel-gpu-firmware -iwlwifi-dvm-firmware -iwlwifi-mvm-firmware \ No newline at end of file ++intel-media-driver ++libva-intel-driver ++libva-intel-media-driver ++libva ++libva-utils ++gstreamer1-vaapi ++ffmpeg ++intel-gpu-tools ++mesa-dri-drivers ++mesa-va-drivers-freeworld ++mesa-vdpau-drivers-freeworld ++mesa-va-drivers-freeworld.i686 ++mesa-vdpau-drivers-freeworld.i686 ++intel-audio-firmware ++intel-gpu-firmware ++iwlwifi-dvm-firmware ++iwlwifi-mvm-firmware \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 6b281e8..67ab890 100644 --- a/src/main.rs +++ b/src/main.rs @@ -235,32 +235,17 @@ fn manage_package(package_command: PackageCommand) -> Result<()> { } fn manage_list(list: String, remove: bool) -> Result<()> { + process_packages(&list, remove, '+')?; + process_packages(&list, remove, '-')?; + Ok(()) +} + +fn process_packages(list: &String, remove: bool, prefix: char) -> Result<()> { let packages = list .lines() .map(|line| line.trim()) - .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 wanted list's packages..."); - dnf_cmd.arg("remove"); - } else { - log::info!("Installing wanted list's packages..."); - dnf_cmd.arg("install").arg("--allowerasing"); - } - - packages.iter().for_each(|package| { - dnf_cmd.arg(package); - }); - - 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()) + .filter(|line| !line.is_empty() && line.starts_with(prefix)) + .map(|line| line.trim_start_matches(prefix).trim()) .collect::>(); if packages.is_empty() { @@ -269,19 +254,27 @@ fn manage_list(list: String, remove: bool) -> Result<()> { 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"); + if prefix == '+' { + log::info!("Removing wanted list's packages..."); + dnf_cmd.arg("remove"); + } else { + 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"); + if prefix == '+' { + log::info!("Installing wanted 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(()) }