refactor: simpilfy packages management
This commit is contained in:
@@ -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
|
||||
+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
|
||||
@@ -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
|
||||
+@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
|
||||
@@ -1,5 +1,5 @@
|
||||
alsa-firmware
|
||||
alsa-sof-firmware
|
||||
linux-firmware
|
||||
realtek-firmware
|
||||
uhd-firmware
|
||||
+alsa-firmware
|
||||
+alsa-sof-firmware
|
||||
+linux-firmware
|
||||
+realtek-firmware
|
||||
+uhd-firmware
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
+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
|
||||
51
src/main.rs
51
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::<Vec<_>>();
|
||||
|
||||
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::<Vec<_>>();
|
||||
|
||||
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(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user