From e890e89d982dbe5eef58fc24ffe1497a1be65d15 Mon Sep 17 00:00:00 2001 From: Luke Harding Date: Wed, 24 Apr 2024 01:57:45 -0400 Subject: [PATCH] Add pacman install check --- src/main.rs | 13 ++++++++++--- src/pacman_install_check.rs | 30 ++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/pacman_install_check.rs diff --git a/src/main.rs b/src/main.rs index 023539c..f6e667b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,12 +6,19 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -fn main() -> Result<(), Box> { +mod pacman_install_check; + +fn main() { println!("{}", copyright_notice()); - Ok(()) + if let Err(e) = pacman_install_check::run() { + eprintln!("{}", e); + return; + } + + println!("Here we do things"); } fn copyright_notice() -> &'static str { - "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" + "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" } diff --git a/src/pacman_install_check.rs b/src/pacman_install_check.rs new file mode 100644 index 0000000..8eceb8f --- /dev/null +++ b/src/pacman_install_check.rs @@ -0,0 +1,30 @@ +/* + 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 . +*/ + +use std::fmt; +use std::fmt::Formatter; +use std::path::Path; + +#[derive(Debug, Clone)] +pub struct PacmanInstalledError; + +impl fmt::Display for PacmanInstalledError { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "pacman pkg manager not installed.") + } +} + +pub fn run() -> Result<(), PacmanInstalledError> { + let exists = Path::new("/usr/bin/pacman").exists(); + + if exists { + Ok(()) + } else { + Err(PacmanInstalledError) + } +}