From 5b7f0966210cfb3bf229dcefe439d755a0bca447 Mon Sep 17 00:00:00 2001 From: Ward from fusion-voyager-3 Date: Thu, 11 Jul 2024 02:45:59 +0300 Subject: [PATCH] apt transaction info --- .idea/workspace.xml | 39 +-- src/bin/apt/apt_full_upgrade/main.rs | 24 +- src/bin/apt/apt_update/main.rs | 6 +- src/bin/gui/apt_update_page/mod.rs | 38 +-- src/bin/gui/apt_update_page/process.rs | 263 ++++++++++++++------- src/lib/apt_install_progress_socket/mod.rs | 28 +-- src/lib/apt_update_progress_socket/mod.rs | 4 +- src/lib/lib.rs | 4 +- src/lib/pika_unixsocket_tools/mod.rs | 2 +- 9 files changed, 261 insertions(+), 147 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index ab4c414..abd33e3 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -8,11 +8,13 @@ - + + + @@ -45,23 +47,23 @@ - { + "keyToString": { + "ASKED_ADD_EXTERNAL_FILES": "true", + "Cargo.Run apt_update.executor": "Run", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.rust.reset.selective.auto.import": "true", + "git-widget-placeholder": "master", + "last_opened_file_path": "/home/ward/RustroverProjects/pika-idk-manager/src/lib", + "node.js.detected.package.eslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "org.rust.cargo.project.model.PROJECT_DISCOVERY": "true", + "org.rust.cargo.project.model.impl.CargoExternalSystemProjectAware.subscribe.first.balloon": "", + "org.rust.disableDetachedFileInspection/home/ward/RustroverProjects/pika-idk-manager/src/apt_update_progress_socket/lib.rs": "true", + "org.rust.first.attach.projects": "true" } -}]]> +} @@ -138,7 +140,8 @@ - + + diff --git a/src/bin/apt/apt_full_upgrade/main.rs b/src/bin/apt/apt_full_upgrade/main.rs index d80cecd..8d06cad 100644 --- a/src/bin/apt/apt_full_upgrade/main.rs +++ b/src/bin/apt/apt_full_upgrade/main.rs @@ -1,14 +1,28 @@ +use pika_unixsocket_tools::apt_install_progress_socket::AptInstallProgressSocket; +use pika_unixsocket_tools::apt_update_progress_socket::AptUpdateProgressSocket; +use pika_unixsocket_tools::pika_unixsocket_tools::*; use rust_apt::new_cache; use rust_apt::progress::{AcquireProgress, InstallProgress}; +use std::fs::*; +use std::process::exit; use tokio::runtime::Runtime; -use pika_unixsocket_tools::apt_update_progress_socket::AptUpdateProgressSocket; -use pika_unixsocket_tools::apt_install_progress_socket::AptInstallProgressSocket; -use pika_unixsocket_tools::pika_unixsocket_tools::*; fn main() { let cache = new_cache!().unwrap(); let percent_socket_path = "/tmp/pika_apt_upgrade_percent.sock"; let status_socket_path = "/tmp/pika_apt_upgrade_status.sock"; + let json_file_path = "/tmp/pika-apt-exclusions.json"; + + let json: serde_json::Value = serde_json::from_str( + &std::fs::read_to_string(json_file_path).expect("Unable to read file"), + ) + .expect("JSON was not well-formatted"); + + if let serde_json::Value::Array(exclusions) = &json["exclusions"] { + for exclusion in exclusions { + println!("{}", exclusion["package"]) + } + } let pkg = cache.get("neovim").unwrap(); let mut acquire_progress = AcquireProgress::new(AptUpdateProgressSocket::new( @@ -24,6 +38,8 @@ fn main() { pkg.protect(); cache.resolve(true).unwrap(); + exit(1); + match cache.get_archives(&mut acquire_progress) { Ok(_) => { Runtime::new() @@ -63,4 +79,4 @@ fn main() { panic!("{}", e.to_string()) } }; -} \ No newline at end of file +} diff --git a/src/bin/apt/apt_update/main.rs b/src/bin/apt/apt_update/main.rs index 33e99f0..b55c131 100644 --- a/src/bin/apt/apt_update/main.rs +++ b/src/bin/apt/apt_update/main.rs @@ -1,9 +1,9 @@ +use pika_unixsocket_tools::apt_update_progress_socket::AptUpdateProgressSocket; +use pika_unixsocket_tools::pika_unixsocket_tools::*; use rust_apt::new_cache; use rust_apt::progress::{AcquireProgress, DynAcquireProgress}; use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::runtime::Runtime; -use pika_unixsocket_tools::apt_update_progress_socket::AptUpdateProgressSocket; -use pika_unixsocket_tools::pika_unixsocket_tools::*; fn main() { let update_cache = new_cache!().unwrap(); @@ -31,4 +31,4 @@ fn main() { panic!("{}", e.to_string()) } }; -} \ No newline at end of file +} diff --git a/src/bin/gui/apt_update_page/mod.rs b/src/bin/gui/apt_update_page/mod.rs index 14c3f85..d7078e8 100644 --- a/src/bin/gui/apt_update_page/mod.rs +++ b/src/bin/gui/apt_update_page/mod.rs @@ -1,12 +1,12 @@ mod process; -use pika_unixsocket_tools::pika_unixsocket_tools::*; use crate::apt_package_row::AptPackageRow; use adw::gio::{Action, SimpleAction}; use adw::prelude::*; use adw::ActionRow; use gtk::glib::*; use gtk::*; +use pika_unixsocket_tools::pika_unixsocket_tools::*; use rust_apt::cache::*; use rust_apt::new_cache; use rust_apt::records::RecordField; @@ -51,15 +51,17 @@ pub fn apt_update_page( let excluded_updates_vec: Rc>> = Rc::new(RefCell::new(Vec::new())); thread::spawn(move || { - Runtime::new() - .unwrap() - .block_on(start_socket_server(update_percent_sender, "/tmp/pika_apt_update_percent.sock")); + Runtime::new().unwrap().block_on(start_socket_server( + update_percent_sender, + "/tmp/pika_apt_update_percent.sock", + )); }); thread::spawn(move || { - Runtime::new() - .unwrap() - .block_on(start_socket_server(update_status_sender, "/tmp/pika_apt_update_status.sock")); + Runtime::new().unwrap().block_on(start_socket_server( + update_status_sender, + "/tmp/pika_apt_update_status.sock", + )); }); thread::spawn(move || { @@ -106,7 +108,6 @@ pub fn apt_update_page( let rows_size_group = gtk::SizeGroup::new(SizeGroupMode::Both); let packages_viewport = gtk::ScrolledWindow::builder() - .hscrollbar_policy(PolicyType::Never) .vexpand(true) .hexpand(true) .margin_bottom(15) @@ -203,9 +204,11 @@ pub fn apt_update_page( .build(); update_button.add_css_class("destructive-action"); - update_button.connect_clicked(clone!(@weak window, @strong excluded_updates_vec => move |_| { - process::apt_process_update(&excluded_updates_vec.borrow(), window); - })); + update_button.connect_clicked( + clone!(@weak window, @strong excluded_updates_vec => move |_| { + process::apt_process_update(&excluded_updates_vec.borrow(), window); + }), + ); bottom_bar.append(&select_button); bottom_bar.append(&update_button); @@ -220,16 +223,21 @@ pub fn apt_update_page( thread::spawn(move || { // Create upgradable list cache let upgradable_cache = new_cache!().unwrap(); - // Create pack sort from upgradable_cache - let upgradable_sort = PackageSort::default().upgradable().names(); + // + upgradable_cache.upgrade(Upgrade::FullUpgrade).unwrap(); - let mut upgradeable_iter = upgradable_cache.packages(&upgradable_sort).peekable(); + upgradable_cache.resolve(true).unwrap(); + + let mut upgradeable_iter = upgradable_cache.get_changes(false).peekable(); while let Some(pkg) = upgradeable_iter.next() { let candidate_version_pkg = pkg.candidate().unwrap(); let package_struct = AptPackageSocket { name: pkg.name().to_string(), arch: pkg.arch().to_string(), - installed_version: pkg.installed().unwrap().version().to_string(), + installed_version: match pkg.installed() { + Some(t) => t.version().to_string(), + _ => {t!("installed_version_to_be_installed").to_string()} + }, candidate_version: candidate_version_pkg.version().to_string(), description: match candidate_version_pkg.description() { Some(s) => s, diff --git a/src/bin/gui/apt_update_page/process.rs b/src/bin/gui/apt_update_page/process.rs index abea871..d0e8c82 100644 --- a/src/bin/gui/apt_update_page/process.rs +++ b/src/bin/gui/apt_update_page/process.rs @@ -1,25 +1,42 @@ -use rust_apt::new_cache; -use rust_apt::cache::Upgrade; use adw::prelude::*; use gtk::glib::*; use gtk::*; +use pika_unixsocket_tools::pika_unixsocket_tools::start_socket_server; use pretty_bytes::converter::convert; -use serde_json::{Value}; -use std::{fs::*, thread}; +use rust_apt::cache::Upgrade; +use rust_apt::new_cache; +use serde::Serialize; +use serde_json::Value; use std::path::Path; use std::process::Command; +use std::{fs::*, thread}; use tokio::runtime::Runtime; -use pika_unixsocket_tools::pika_unixsocket_tools::start_socket_server; struct AptChangesInfo { - package_count: u64, + package_count_upgrade: u64, + package_count_install: u64, + package_count_downgrade: u64, + package_count_remove: u64, total_download_size: u64, - total_installed_size: u64 + total_installed_size: i64, +} +#[derive(Serialize)] +struct Exclusions { + exclusions: Vec, } impl AptChangesInfo { - fn add_package(&mut self) { - self.package_count += 1; + fn add_upgrade(&mut self) { + self.package_count_upgrade += 1; + } + fn add_install(&mut self) { + self.package_count_install += 1; + } + fn add_downgrade(&mut self) { + self.package_count_downgrade += 1; + } + fn add_remove(&mut self) { + self.package_count_remove += 1; } fn increase_total_download_size_by(&mut self, value: u64) { @@ -27,7 +44,11 @@ impl AptChangesInfo { } fn increase_total_installed_size_by(&mut self, value: u64) { - self.total_installed_size += value; + self.total_installed_size += value as i64; + } + + fn decrease_total_installed_size_by(&mut self, value: u64) { + self.total_installed_size -= value as i64; } } @@ -55,41 +76,93 @@ pub fn apt_process_update(excluded_updates_vec: &Vec, window: adw::Appli excluded_updates_alert_dialog.set_default_response(Some("excluded_updates_alert_continue")); - let excluded_updates_alert_dialog_action = gio::SimpleAction::new("excluded_updates_alert_dialog_action", None); + let excluded_updates_alert_dialog_action = + gio::SimpleAction::new("excluded_updates_alert_dialog_action", None); - excluded_updates_alert_dialog_action.connect_activate(clone!(@weak window, @strong excluded_updates_vec => move |_, _| { - apt_confirm_window(&excluded_updates_vec, window) - })); + excluded_updates_alert_dialog_action.connect_activate( + clone!(@weak window, @strong excluded_updates_vec => move |_, _| { + apt_confirm_window(&excluded_updates_vec, window) + }), + ); if excluded_updates_vec.is_empty() { excluded_updates_alert_dialog_action.activate(None); } else { - excluded_updates_alert_dialog - .choose(None::<&gio::Cancellable>, move |choice| { - if choice == "excluded_updates_alert_continue" { - excluded_updates_alert_dialog_action.activate(None); - } - }); + excluded_updates_alert_dialog.choose(None::<&gio::Cancellable>, move |choice| { + if choice == "excluded_updates_alert_continue" { + excluded_updates_alert_dialog_action.activate(None); + } + }); } } fn apt_confirm_window(excluded_updates_vec: &Vec, window: adw::ApplicationWindow) { // Emulate Apt Full Upgrade to get transaction info let mut apt_changes_struct = AptChangesInfo { - package_count: 0, + package_count_upgrade: 0, + package_count_install: 0, + package_count_downgrade: 0, + package_count_remove: 0, total_download_size: 0, - total_installed_size: 0 + total_installed_size: 0, }; let apt_cache = new_cache!().unwrap(); + let apt_upgrade_cache = new_cache!().unwrap(); apt_cache.upgrade(Upgrade::FullUpgrade).unwrap(); for change in apt_cache.get_changes(false) { - if !excluded_updates_vec.iter().any(|e| change.name().contains(e)) { - apt_changes_struct.add_package(); + if !excluded_updates_vec + .iter() + .any(|e| change.name().contains(e)) + { + let pkg = apt_upgrade_cache.get(change.name()).unwrap(); + if change.marked_upgrade() || change.marked_install() || change.marked_downgrade() { + pkg.mark_install(true, false); + } else if change.marked_delete() { + pkg.mark_delete(false); + } + } + } + + apt_upgrade_cache.resolve(true).unwrap(); + + println!("{}", t!("gui_changes_emu_msg_0")); + for change in apt_upgrade_cache.get_changes(false) { + if change.is_installed() { + apt_changes_struct + .decrease_total_installed_size_by(change.installed().unwrap().installed_size()); + } + if change.marked_upgrade() && change.is_installed() { + println!("{}: {}", t!("gui_changes_emu_msg_upgrading"), change.name()); + apt_changes_struct.add_upgrade(); apt_changes_struct.increase_total_download_size_by(change.candidate().unwrap().size()); - apt_changes_struct.increase_total_installed_size_by(change.candidate().unwrap().installed_size()); + apt_changes_struct + .increase_total_installed_size_by(change.candidate().unwrap().installed_size()); + } else if change.marked_install() || change.marked_upgrade() && !change.is_installed() { + println!( + "{}: {}", + t!("gui_changes_emu_msg_installing"), + change.name() + ); + apt_changes_struct.add_install(); + apt_changes_struct.increase_total_download_size_by(change.candidate().unwrap().size()); + apt_changes_struct + .increase_total_installed_size_by(change.candidate().unwrap().installed_size()); + } else if change.marked_downgrade() { + println!( + "{}: {}", + t!("gui_changes_emu_msg_downgrading"), + change.name() + ); + apt_changes_struct.add_downgrade(); + apt_changes_struct.increase_total_download_size_by(change.candidate().unwrap().size()); + apt_changes_struct + .increase_total_installed_size_by(change.candidate().unwrap().installed_size()); + } else if change.marked_delete() { + println!("{}: {}", t!("gui_changes_emu_msg_removing"), change.name()); + apt_changes_struct.add_remove(); } } @@ -101,39 +174,59 @@ fn apt_confirm_window(excluded_updates_vec: &Vec, window: adw::Applicati let apt_update_dialog_badges_size_group0 = gtk::SizeGroup::new(SizeGroupMode::Both); let apt_update_dialog_badges_size_group1 = gtk::SizeGroup::new(SizeGroupMode::Both); - apt_confirm_dialog_child_box.append( - &create_color_badge( - &t!("package_count_badge_label"), - &apt_changes_struct.package_count.to_string(), - "background-accent-bg", - &apt_update_dialog_badges_size_group, - &apt_update_dialog_badges_size_group0, - &apt_update_dialog_badges_size_group1 - ) - ); + apt_confirm_dialog_child_box.append(&create_color_badge( + &t!("package_count_upgrade_badge_label"), + &apt_changes_struct.package_count_upgrade.to_string(), + "background-accent-bg", + &apt_update_dialog_badges_size_group, + &apt_update_dialog_badges_size_group0, + &apt_update_dialog_badges_size_group1, + )); - apt_confirm_dialog_child_box.append( - &create_color_badge( - &t!("total_download_size_badge_label"), - &convert(apt_changes_struct.total_download_size as f64), - "background-accent-bg", - &apt_update_dialog_badges_size_group, - &apt_update_dialog_badges_size_group0, - &apt_update_dialog_badges_size_group1 - ) - ); + apt_confirm_dialog_child_box.append(&create_color_badge( + &t!("package_count_install_badge_label"), + &apt_changes_struct.package_count_install.to_string(), + "background-accent-bg", + &apt_update_dialog_badges_size_group, + &apt_update_dialog_badges_size_group0, + &apt_update_dialog_badges_size_group1, + )); + apt_confirm_dialog_child_box.append(&create_color_badge( + &t!("package_count_downgrade_badge_label"), + &apt_changes_struct.package_count_downgrade.to_string(), + "background-accent-bg", + &apt_update_dialog_badges_size_group, + &apt_update_dialog_badges_size_group0, + &apt_update_dialog_badges_size_group1, + )); - apt_confirm_dialog_child_box.append( - &create_color_badge( - &t!("total_installed_size_badge_label"), - &convert(apt_changes_struct.total_installed_size as f64), - "background-accent-bg", - &apt_update_dialog_badges_size_group, - &apt_update_dialog_badges_size_group0, - &apt_update_dialog_badges_size_group1 - ) - ); + apt_confirm_dialog_child_box.append(&create_color_badge( + &t!("package_count_remove_badge_label"), + &apt_changes_struct.package_count_remove.to_string(), + "background-accent-bg", + &apt_update_dialog_badges_size_group, + &apt_update_dialog_badges_size_group0, + &apt_update_dialog_badges_size_group1, + )); + + apt_confirm_dialog_child_box.append(&create_color_badge( + &t!("total_download_size_badge_label"), + &convert(apt_changes_struct.total_download_size as f64), + "background-accent-bg", + &apt_update_dialog_badges_size_group, + &apt_update_dialog_badges_size_group0, + &apt_update_dialog_badges_size_group1, + )); + + apt_confirm_dialog_child_box.append(&create_color_badge( + &t!("total_installed_size_badge_label"), + &convert(apt_changes_struct.total_installed_size as f64), + "background-accent-bg", + &apt_update_dialog_badges_size_group, + &apt_update_dialog_badges_size_group0, + &apt_update_dialog_badges_size_group1, + )); let apt_confirm_dialog = adw::MessageDialog::builder() .transient_for(&window) @@ -159,26 +252,32 @@ fn apt_confirm_window(excluded_updates_vec: &Vec, window: adw::Applicati apt_confirm_dialog.set_default_response(Some("apt_confirm_dialog_confirm")); - if !excluded_updates_vec.is_empty() { - let excluded_updates_values: Vec = excluded_updates_vec.into_iter() - .map(|i| serde_json::from_str(format!("{{\"package\":\"{}\"}}", i).as_str())) - .collect::,_>>() - .unwrap(); - - let excluded_updates_values_json = Value::Array(excluded_updates_values); + let exclusions_array = Exclusions { + exclusions: excluded_updates_vec + .into_iter() + .map(|i| serde_json::from_str(format!("{{\"package\":\"{}\"}}", i).as_str())) + .collect::, _>>() + .unwrap(), + }; let json_file_path = "/tmp/pika-apt-exclusions.json"; if Path::new(json_file_path).exists() { std::fs::remove_file(json_file_path).expect("Failed to remove old json file"); } - - std::fs::write(json_file_path, serde_json::to_string_pretty(&excluded_updates_values_json).unwrap()).expect("Failed to write to json file"); + std::fs::write( + json_file_path, + serde_json::to_string_pretty(&exclusions_array).unwrap(), + ) + .expect("Failed to write to json file"); } - //apt_confirm_dialog.present(); - apt_full_upgrade_from_socket(window); + apt_confirm_dialog.choose(None::<&gio::Cancellable>, move |choice| { + if choice == "apt_confirm_dialog_confirm" { + apt_full_upgrade_from_socket(window); + } + }); } fn apt_full_upgrade_from_socket(window: adw::ApplicationWindow) { @@ -189,15 +288,17 @@ fn apt_full_upgrade_from_socket(window: adw::ApplicationWindow) { let upgrade_status_sender_clone0 = upgrade_status_sender.clone(); thread::spawn(move || { - Runtime::new() - .unwrap() - .block_on(start_socket_server(upgrade_percent_sender, "/tmp/pika_apt_upgrade_percent.sock")); + Runtime::new().unwrap().block_on(start_socket_server( + upgrade_percent_sender, + "/tmp/pika_apt_upgrade_percent.sock", + )); }); thread::spawn(move || { - Runtime::new() - .unwrap() - .block_on(start_socket_server(upgrade_status_sender, "/tmp/pika_apt_upgrade_status.sock")); + Runtime::new().unwrap().block_on(start_socket_server( + upgrade_status_sender, + "/tmp/pika_apt_upgrade_status.sock", + )); }); thread::spawn(move || { @@ -206,11 +307,9 @@ fn apt_full_upgrade_from_socket(window: adw::ApplicationWindow) { .status() .unwrap(); match apt_upgrade_command.code().unwrap() { - 0 => { - upgrade_status_sender_clone0 - .send_blocking("FN_OVERRIDE_SUCCESSFUL".to_owned()) - .unwrap() - } + 0 => upgrade_status_sender_clone0 + .send_blocking("FN_OVERRIDE_SUCCESSFUL".to_owned()) + .unwrap(), 53 => {} _ => { upgrade_status_sender_clone0 @@ -275,10 +374,10 @@ fn apt_full_upgrade_from_socket(window: adw::ApplicationWindow) { apt_upgrade_dialog.close(); } "FN_OVERRIDE_FAILED" => { - apt_upgrade_dialog_child_box.set_visible(false); - apt_upgrade_dialog.set_title(Some(&t!("apt_upgrade_dialog_status_failed").to_string())); - apt_upgrade_dialog.set_response_enabled("apt_upgrade_dialog_ok", true); - } + apt_upgrade_dialog_child_box.set_visible(false); + apt_upgrade_dialog.set_title(Some(&t!("apt_upgrade_dialog_status_failed").to_string())); + apt_upgrade_dialog.set_response_enabled("apt_upgrade_dialog_ok", true); + } _ => apt_upgrade_dialog.set_body(&state) } } @@ -345,4 +444,4 @@ fn create_color_badge( boxedlist.append(&badge_box); group_size.add_widget(&boxedlist); boxedlist -} \ No newline at end of file +} diff --git a/src/lib/apt_install_progress_socket/mod.rs b/src/lib/apt_install_progress_socket/mod.rs index 999e51b..be342bd 100644 --- a/src/lib/apt_install_progress_socket/mod.rs +++ b/src/lib/apt_install_progress_socket/mod.rs @@ -2,7 +2,7 @@ use crate::pika_unixsocket_tools::*; use rust_apt::progress::{DynAcquireProgress, DynInstallProgress}; use rust_apt::raw::{AcqTextStatus, ItemDesc, PkgAcquire}; use std::process::exit; -use tokio::io::{AsyncWriteExt}; +use tokio::io::AsyncWriteExt; use tokio::net::UnixStream; use tokio::runtime::Runtime; @@ -36,32 +36,20 @@ impl<'a> DynInstallProgress for AptInstallProgressSocket<'a> { pkgname: String, steps_done: u64, total_steps: u64, - action: String + action: String, ) { - let progress_percent: f32 = - (steps_done as f32 * 100.0) / total_steps as f32; + let progress_percent: f32 = (steps_done as f32 * 100.0) / total_steps as f32; Runtime::new().unwrap().block_on(send_progress_percent( progress_percent, self.percent_socket_path, )); - Runtime::new().unwrap().block_on(send_progress_status( - &action, - self.status_socket_path, - )); + Runtime::new() + .unwrap() + .block_on(send_progress_status(&action, self.status_socket_path)); } - fn error( - &mut self, - pkgname: String, - steps_done: u64, - total_steps: u64, - error: String - ) { - let message = format!( - "dpkg failure on {}: {}", - pkgname, - error - ); + fn error(&mut self, pkgname: String, steps_done: u64, total_steps: u64, error: String) { + let message = format!("dpkg failure on {}: {}", pkgname, error); eprintln!("{}", &message); Runtime::new() .unwrap() diff --git a/src/lib/apt_update_progress_socket/mod.rs b/src/lib/apt_update_progress_socket/mod.rs index be309e3..15f647e 100644 --- a/src/lib/apt_update_progress_socket/mod.rs +++ b/src/lib/apt_update_progress_socket/mod.rs @@ -1,8 +1,8 @@ use crate::pika_unixsocket_tools::*; -use rust_apt::progress::{DynAcquireProgress}; +use rust_apt::progress::DynAcquireProgress; use rust_apt::raw::{AcqTextStatus, ItemDesc, PkgAcquire}; use std::process::exit; -use tokio::io::{AsyncWriteExt}; +use tokio::io::AsyncWriteExt; use tokio::net::UnixStream; use tokio::runtime::Runtime; diff --git a/src/lib/lib.rs b/src/lib/lib.rs index 98c2e73..aac95e7 100644 --- a/src/lib/lib.rs +++ b/src/lib/lib.rs @@ -1,3 +1,3 @@ -pub mod pika_unixsocket_tools; pub mod apt_install_progress_socket; -pub mod apt_update_progress_socket; \ No newline at end of file +pub mod apt_update_progress_socket; +pub mod pika_unixsocket_tools; diff --git a/src/lib/pika_unixsocket_tools/mod.rs b/src/lib/pika_unixsocket_tools/mod.rs index ba37e9c..87a5b32 100644 --- a/src/lib/pika_unixsocket_tools/mod.rs +++ b/src/lib/pika_unixsocket_tools/mod.rs @@ -79,4 +79,4 @@ pub async fn start_socket_server(buffer_sender: async_channel::Sender, s } } } -} \ No newline at end of file +}