/* Rust Arch Linux Updater Copyright (C) 2024 Luke Harding This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* main.rs This file contains the primary logic of the application */ use colored::{ColoredString, Colorize}; use wrappers::pacman; mod shell_commands; mod wrappers; fn main() { println!("{}", copyright_notice()); if let Err(e) = pacman::check() { error_println(e.to_string()); return; } else { notice_println("Pacman is installed\n") } notice_println("Running pacman update"); if let Err(e) = pacman::update_all() { error_println(e.to_string()); return; } notice_println("Getting orphaned packages"); let result = match pacman::get_unused() { Ok(result) => result, Err(e) => { error_println(e.to_string()); return; } }; if result.is_empty() { println!("No Orphaned Packages Found.") } else if let Err(e) = pacman::remove_unused(result) { error_println(e.to_string()); return; } notice_println("Clearing Cache"); if let Err(e) = pacman::clean_cache() { error_println(e.to_string()); return; } notice_println("\nUpdate process complete!"); } fn copyright_notice() -> ColoredString { "Rust Arch Linux Updater Copyright (C) 2024 Luke Harding \nThis program comes with ABSOLUTELY NO WARRANTY\nThis is free software, and you are welcome to redistribute it under certain conditions\n".italic() } pub fn error_println(msg: impl Into) { eprintln!("{}", msg.into().red().bold()) } pub fn notice_println(msg: impl Into) { println!("{}", msg.into().green().bold()) }