@@ -4,6 +4,7 @@ use std::io::{self, Write};
44use std:: thread;
55use std:: time:: Duration ;
66use std:: sync:: { Arc , atomic:: { AtomicBool , Ordering } } ;
7+
78pub fn run_command_with_spinner ( program : & str , args : Vec < & str > , message : & str ) {
89 println ! ( "{}" , format!( "▶ {}: {}" , message, args. join( " " ) ) . blue( ) . bold( ) . on_black( ) ) ;
910 let stop = Arc :: new ( AtomicBool :: new ( false ) ) ;
@@ -45,6 +46,7 @@ pub fn run_command_with_spinner(program: &str, args: Vec<&str>, message: &str) {
4546 println ! ( "{}" , format!( "└──────────────────────────" ) . red( ) . bold( ) . on_black( ) ) ;
4647 }
4748}
49+
4850pub fn handle_update ( ) {
4951 println ! ( "{}" , "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" . magenta( ) . bold( ) . on_black( ) ) ;
5052 println ! ( "{}" , "┃ Starting System Update ┃" . magenta( ) . bold( ) . on_black( ) ) ;
@@ -59,23 +61,24 @@ pub fn handle_update() {
5961 println ! ( "{}" , "┃ System Update Complete ┃" . green( ) . bold( ) . on_black( ) ) ;
6062 println ! ( "{}" , "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" . green( ) . bold( ) . on_black( ) ) ;
6163}
64+
6265pub fn handle_cybersecurity ( ) {
6366 println ! ( "{}" , "========== Setting up Cybersecurity Container ==========" . cyan( ) . bold( ) . on_black( ) ) ;
6467 run_command_with_spinner ( "sudo" , vec ! [ "apt" , "install" , "-y" , "distrobox" ] , "Installing distrobox if not present" ) ;
6568 let exists = Command :: new ( "distrobox" ) . arg ( "list" ) . output ( ) . map ( |o| String :: from_utf8_lossy ( & o. stdout ) . contains ( "cybersecurity" ) ) . unwrap_or ( false ) ;
6669 if !exists {
6770 run_command_with_spinner ( "distrobox" , vec ! [ "create" , "--name" , "cybersecurity" , "--image" , "archlinux:latest" ] , "Creating container" ) ;
6871 }
69- let ba_check = Command :: new ( "distrobox-enter" ) . args ( & [ "-n" , "cybersecurity" , "--" , "sudo" , "grep" , "[blackarch]" , "/etc/pacman.conf" ] ) . output ( ) . map ( |o| o. status . success ( ) ) . unwrap_or ( false ) ;
72+ let ba_check = Command :: new ( "distrobox-enter" ) . args ( & [ "-n" , "cybersecurity" , "--" , "sudo" , "grep" , "\\ [blackarch\\ ]" , "/etc/pacman.conf" ] ) . output ( ) . map ( |o| o. status . success ( ) ) . unwrap_or ( false ) ;
7073 if !ba_check {
7174 run_command_with_spinner ( "distrobox-enter" , vec ! [ "-n" , "cybersecurity" , "--" , "curl" , "-O" , "https://blackarch.org/strap.sh" ] , "Downloading strap.sh" ) ;
7275 run_command_with_spinner ( "distrobox-enter" , vec ! [ "-n" , "cybersecurity" , "--" , "bash" , "-c" , "echo e26445d34490cc06bd14b51f9924debf569e0ecb strap.sh | sha1sum -c" ] , "Verifying sha1sum" ) ;
7376 run_command_with_spinner ( "distrobox-enter" , vec ! [ "-n" , "cybersecurity" , "--" , "chmod" , "+x" , "strap.sh" ] , "Making executable" ) ;
7477 run_command_with_spinner ( "distrobox-enter" , vec ! [ "-n" , "cybersecurity" , "--" , "sudo" , "./strap.sh" ] , "Installing BlackArch" ) ;
7578 }
76- let multi_check = Command :: new ( "distrobox-enter" ) . args ( & [ "-n" , "cybersecurity" , "--" , "grep" , "^[multilib]" , "/etc/pacman.conf" ] ) . output ( ) . map ( |o| o. status . success ( ) ) . unwrap_or ( false ) ;
79+ let multi_check = Command :: new ( "distrobox-enter" ) . args ( & [ "-n" , "cybersecurity" , "--" , "grep" , "^\\ [multilib\\ ]" , "/etc/pacman.conf" ] ) . output ( ) . map ( |o| o. status . success ( ) ) . unwrap_or ( false ) ;
7780 if !multi_check {
78- run_command_with_spinner ( "distrobox-enter" , vec ! [ "-n" , "cybersecurity" , "--" , "sudo" , "sed" , "-i" , "/\\ [multilib\\ ]/,/Include/s/^#//" , "/etc/pacman.conf" ] , "Enabling multilib" ) ;
81+ run_command_with_spinner ( "distrobox-enter" , vec ! [ "-n" , "cybersecurity" , "--" , "sudo" , "sed" , "-i" , "/# \\ [multilib\\ ]/,/Include/s/^#//" , "/etc/pacman.conf" ] , "Enabling multilib" ) ;
7982 }
8083 run_command_with_spinner ( "distrobox-enter" , vec ! [ "-n" , "cybersecurity" , "--" , "sudo" , "pacman" , "-Syu" , "--noconfirm" ] , "Updating system" ) ;
8184 let home = std:: env:: var ( "HOME" ) . unwrap_or_default ( ) ;
@@ -102,6 +105,7 @@ pub fn handle_cybersecurity() {
102105 }
103106 println ! ( "{}" , "========== Cybersecurity Setup Complete ==========" . green( ) . bold( ) . on_black( ) ) ;
104107}
108+
105109pub fn handle_gaming ( ) {
106110 println ! ( "{}" , "========== Installing Gaming Tools ==========" . cyan( ) . bold( ) . on_black( ) ) ;
107111 run_command_with_spinner ( "flatpak" , vec ! [ "remote-add" , "--if-not-exists" , "flathub" , "https://dl.flathub.org/repo/flathub.flatpakrepo" ] , "Adding flathub repo" ) ;
0 commit comments