diff --git a/.github/release-nest-v3 b/.github/release-nest-v3 index d8263ee..e440e5c 100644 --- a/.github/release-nest-v3 +++ b/.github/release-nest-v3 @@ -1 +1 @@ -2 \ No newline at end of file +3 \ No newline at end of file diff --git a/data/scripts/modify_package.sh b/data/scripts/modify_package.sh index 0b06270..195f0aa 100755 --- a/data/scripts/modify_package.sh +++ b/data/scripts/modify_package.sh @@ -2,11 +2,11 @@ set -e -if dpkg -s "$1" +if [[ "$1" == "install" ]] then - apt remove -y "$1" - apt autremove -y + apt install -y "${@:2}" else - apt install -y "$1" + apt remove -y "${@:2}" + apt autoremove -y fi exit 0 \ No newline at end of file diff --git a/debian/changelog b/debian/changelog index b4e4551..aeb2fb2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -pika-kernel-manager (0.1.3-101pika1) pika; urgency=low +pika-kernel-manager (0.1.3-101pika2) pika; urgency=low * Initial Release diff --git a/src/kernel_pkg/mod.rs b/src/kernel_pkg/mod.rs index 95bc5f0..51c7510 100644 --- a/src/kernel_pkg/mod.rs +++ b/src/kernel_pkg/mod.rs @@ -403,7 +403,7 @@ fn add_package_rows( let log_loop_sender_clone= log_loop_sender.clone(); let kernel_packages_clone = kernel_packages.clone(); std::thread::spawn(move || { - let command = kernel_modify(log_loop_sender_clone, &kernel_packages_clone); + let command = kernel_modify(log_loop_sender_clone, &kernel_packages_clone, true); match command { Ok(_) => { println!("{}", t!("log_status_kernel_modify_successful")); @@ -433,7 +433,7 @@ fn add_package_rows( let log_loop_sender_clone= log_loop_sender.clone(); let kernel_packages_clone = kernel_packages.clone(); std::thread::spawn(move || { - let command = kernel_modify(log_loop_sender_clone, &kernel_packages_clone); + let command = kernel_modify(log_loop_sender_clone, &kernel_packages_clone, false); match command { Ok(_) => { println!("{}", t!("log_status_kernel_modify_successful")); @@ -479,17 +479,29 @@ fn add_package_rows( })); } -const KERNEL_MODIFY_PROG: &str = r###" +const KERNEL_INSTALL_PROG: &str = r###" #! /bin/bash PACKAGE="$0" -pkexec /usr/lib/pika/kernel-manager/scripts/modify_package.sh "${PACKAGE}" +pkexec /usr/lib/pika/kernel-manager/scripts/modify_package.sh install "${PACKAGE}" +"###; + +const KERNEL_REMOVE_PROG: &str = r###" +#! /bin/bash +PACKAGE="$0" +pkexec /usr/lib/pika/kernel-manager/scripts/modify_package.sh remove "${PACKAGE}" "###; fn kernel_modify( log_loop_sender: async_channel::Sender, kernel_pkg: &str, + install: bool ) -> Result<(), std::boxed::Box> { + let kernel_modify_prog = if install { + KERNEL_INSTALL_PROG + } else { + KERNEL_REMOVE_PROG + }; let (pipe_reader, pipe_writer) = os_pipe::pipe()?; - let child = cmd!("bash", "-c", KERNEL_MODIFY_PROG, kernel_pkg) + let child = cmd!("bash", "-c", kernel_modify_prog, kernel_pkg) .stderr_to_stdout() .stdout_file(pipe_writer) .start()?;