@@ -5,7 +5,7 @@ use std::thread;
55use std:: time:: Duration ;
66use std:: sync:: { Arc , atomic:: { AtomicBool , Ordering } } ;
77pub fn run_command_with_spinner ( program : & str , args : Vec < & str > , message : & str ) {
8- println ! ( "{}" , format!( "{}: {}" , message, args. join( " " ) ) . blue( ) . bold( ) . on_black( ) ) ;
8+ println ! ( "{}" , format!( "▶ {}: {}" , message, args. join( " " ) ) . blue( ) . bold( ) . on_black( ) ) ;
99 let stop = Arc :: new ( AtomicBool :: new ( false ) ) ;
1010 let stop_clone = stop. clone ( ) ;
1111 let spinner_chars: Vec < & str > = vec ! [ "⠋" , "⠙" , "⠹" , "⠸" , "⠼" , "⠴" , "⠦" , "⠧" , "⠇" , "⠏" ] ;
@@ -30,19 +30,34 @@ pub fn run_command_with_spinner(program: &str, args: Vec<&str>, message: &str) {
3030 stop. store ( true , Ordering :: Relaxed ) ;
3131 handle. join ( ) . unwrap ( ) ;
3232 if output. status . success ( ) {
33- println ! ( "{}" , String :: from_utf8_lossy( & output. stdout) . green( ) . bold( ) . on_black( ) ) ;
33+ let out_str = String :: from_utf8_lossy ( & output. stdout ) . to_string ( ) ;
34+ if !out_str. is_empty ( ) {
35+ println ! ( "{}" , format!( "┌── Output ────────────────" ) . green( ) . bold( ) . on_black( ) ) ;
36+ println ! ( "{}" , out_str. green( ) . on_black( ) ) ;
37+ println ! ( "{}" , format!( "└──────────────────────────" ) . green( ) . bold( ) . on_black( ) ) ;
38+ } else {
39+ println ! ( "{}" , "✔ Success (no output)" . green( ) . bold( ) . on_black( ) ) ;
40+ }
3441 } else {
35- println ! ( "{}" , String :: from_utf8_lossy( & output. stderr) . red( ) . bold( ) . on_black( ) ) ;
42+ let err_str = String :: from_utf8_lossy ( & output. stderr ) . to_string ( ) ;
43+ println ! ( "{}" , format!( "┌── Error ─────────────────" ) . red( ) . bold( ) . on_black( ) ) ;
44+ println ! ( "{}" , err_str. red( ) . on_black( ) ) ;
45+ println ! ( "{}" , format!( "└──────────────────────────" ) . red( ) . bold( ) . on_black( ) ) ;
3646 }
3747}
3848pub fn handle_update ( ) {
39- println ! ( "{}" , "========== Starting System Update ==========" . magenta( ) . bold( ) . on_black( ) ) ;
49+ println ! ( "{}" , "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" . magenta( ) . bold( ) . on_black( ) ) ;
50+ println ! ( "{}" , "┃ Starting System Update ┃" . magenta( ) . bold( ) . on_black( ) ) ;
51+ println ! ( "{}" , "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" . magenta( ) . bold( ) . on_black( ) ) ;
4052 run_command_with_spinner ( "sudo" , vec ! [ "apt" , "update" ] , "Updating APT repositories" ) ;
4153 run_command_with_spinner ( "sudo" , vec ! [ "apt" , "upgrade" , "-y" ] , "Upgrading APT packages" ) ;
4254 run_command_with_spinner ( "flatpak" , vec ! [ "update" , "-y" ] , "Updating Flatpak packages" ) ;
4355 run_command_with_spinner ( "snap" , vec ! [ "refresh" ] , "Refreshing Snap packages" ) ;
4456 run_command_with_spinner ( "fwupdmgr" , vec ! [ "update" ] , "Updating firmware" ) ;
45- println ! ( "{}" , "========== System Update Complete ==========" . green( ) . bold( ) . on_black( ) ) ;
57+ run_command_with_spinner ( "omz" , vec ! [ "update" ] , "Updating Oh-My-Zsh" ) ;
58+ println ! ( "{}" , "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" . green( ) . bold( ) . on_black( ) ) ;
59+ println ! ( "{}" , "┃ System Update Complete ┃" . green( ) . bold( ) . on_black( ) ) ;
60+ println ! ( "{}" , "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" . green( ) . bold( ) . on_black( ) ) ;
4661}
4762pub fn handle_cybersecurity ( ) {
4863 println ! ( "{}" , "========== Installing Penetration Tools ==========" . cyan( ) . bold( ) . on_black( ) ) ;
0 commit comments