Added logger
This commit is contained in:
		
							parent
							
								
									208eed348b
								
							
						
					
					
						commit
						08eca1a2d0
					
				| 
						 | 
				
			
			@ -12,5 +12,9 @@ chrono = "0.4.38"
 | 
			
		|||
clap = { version = "4.5.7", features = ["derive"] }
 | 
			
		||||
dlopen = "0.1.8"
 | 
			
		||||
dlopen_derive = "0.1.4"
 | 
			
		||||
env_logger = "0.11.3"
 | 
			
		||||
libc = "0.2.155"
 | 
			
		||||
log = "0.4.21"
 | 
			
		||||
serde = { version = "1.0.203", features = ["derive"] }
 | 
			
		||||
toml = "0.8.14"
 | 
			
		||||
x11 = { version = "2.21.0", features = ["xlib"] }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ impl Display {
 | 
			
		|||
            let display = xlib::XOpenDisplay(std::ptr::null());
 | 
			
		||||
            
 | 
			
		||||
            if display.is_null() {
 | 
			
		||||
                eprintln!("ERROR: Could not open x11 display");
 | 
			
		||||
                log::error!("Could not open x11 display");
 | 
			
		||||
                return Err(());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										19
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								src/main.rs
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -14,6 +14,22 @@ struct CliArgs {
 | 
			
		|||
 | 
			
		||||
fn main() -> ExitCode {
 | 
			
		||||
    // let ca = CliArgs::parse();
 | 
			
		||||
    if ca.debug {
 | 
			
		||||
        env_logger::builder()
 | 
			
		||||
            .filter(None, log::LevelFilter::Debug)
 | 
			
		||||
            .init();
 | 
			
		||||
    } else {
 | 
			
		||||
        env_logger::builder()
 | 
			
		||||
            .filter(None, log::LevelFilter::Info)
 | 
			
		||||
            .init();
 | 
			
		||||
    let config;
 | 
			
		||||
    match config::Config::new(ca.config_dir.as_std_path()) {
 | 
			
		||||
        Ok(v) => config = v,
 | 
			
		||||
        Err(e) => {
 | 
			
		||||
            log::error!("Failed to parse config: {e:?}");
 | 
			
		||||
            return ExitCode::from(2);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    let Ok(mut disp) = display::Display::new() else {
 | 
			
		||||
        return ExitCode::from(1);
 | 
			
		||||
    }; 
 | 
			
		||||
| 
						 | 
				
			
			@ -23,7 +39,7 @@ fn main() -> ExitCode {
 | 
			
		|||
    if let Err(e) = pm.load(PathBuf::from("./plugins")
 | 
			
		||||
        //ca.plugin_dir.as_std_path().to_path_buf()
 | 
			
		||||
        ){
 | 
			
		||||
        eprintln!("ERROR: Failed to load plugins: {e:?}"); 
 | 
			
		||||
        return ExitCode::from(3);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pm.init_plugins();
 | 
			
		||||
| 
						 | 
				
			
			@ -35,6 +51,7 @@ fn main() -> ExitCode {
 | 
			
		|||
        
 | 
			
		||||
            
 | 
			
		||||
        let _ = disp.write_display_name(&vals.join(" | "));
 | 
			
		||||
            log::warn!("Failed to write too bar: {e}");
 | 
			
		||||
        std::thread::sleep(Duration::from_millis(250));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,13 +20,15 @@ impl PlugMan {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn load(&mut self, dir: PathBuf) -> Result<(), PluginError>{
 | 
			
		||||
        log::debug!("Loading plugins from {:?}", dir);
 | 
			
		||||
 | 
			
		||||
        let files = std::fs::read_dir(dir)?;
 | 
			
		||||
 | 
			
		||||
        for file in files {
 | 
			
		||||
            let entry = file?;
 | 
			
		||||
            if entry.file_type()?.is_file() {
 | 
			
		||||
                let plugin = Plugin::load(entry.path().to_path_buf())?;
 | 
			
		||||
                println!("INFO: Loaded plugin {} {} licensed with {}", 
 | 
			
		||||
                log::info!("Loaded plugin '{}' ({}) licensed with {}", 
 | 
			
		||||
                    plugin.name().clone(),
 | 
			
		||||
                    plugin.version().clone().unwrap_or("None".to_string()),
 | 
			
		||||
                    plugin.license().clone().unwrap_or("None".to_string())
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +39,8 @@ impl PlugMan {
 | 
			
		|||
                self.load(entry.path().to_path_buf())?;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        println!("INFO: Loaded {} plugins", self.plugins.len());
 | 
			
		||||
            log::error!("No plugins found");
 | 
			
		||||
        log::info!("Loaded {} plugins", self.plugins.len());
 | 
			
		||||
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +55,7 @@ impl PlugMan {
 | 
			
		|||
    pub fn reload_plugins(&mut self) {
 | 
			
		||||
        for plugin in &mut self.plugins {
 | 
			
		||||
            if let Err(e) = plugin.reload() {
 | 
			
		||||
                eprintln!("ERROR: Failed to reload plugin {:?}: {e}", plugin.name()); 
 | 
			
		||||
                log::error!("Failed to reload plugin {:?}: {e}", plugin.name()); 
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
use std::{alloc::Layout, ffi::{c_char, c_uint, CStr, CString}, path::PathBuf};
 | 
			
		||||
use std::{alloc::Layout, ffi::{c_char, CStr}, path::PathBuf};
 | 
			
		||||
 | 
			
		||||
use dlopen::raw::Library;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +38,7 @@ impl Plugin {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    fn reload_symbols(&mut self) -> Result<(), dlopen::Error> {
 | 
			
		||||
        println!("INFO: Loading {:?}", self.path);
 | 
			
		||||
        log::debug!("Loading {:?}", self.path);
 | 
			
		||||
        let lib = Library::open(&self.path)?;
 | 
			
		||||
        let symbols = PluginSyms { 
 | 
			
		||||
            init: unsafe { lib.symbol("plug_init")? },
 | 
			
		||||
| 
						 | 
				
			
			@ -51,14 +51,13 @@ impl Plugin {
 | 
			
		|||
        };
 | 
			
		||||
        unsafe {
 | 
			
		||||
            if (symbols.get_info)().is_null() {
 | 
			
		||||
                eprintln!("ERROR: Info fields for plugin {:?} are null", self.path);
 | 
			
		||||
                log::error!("Info fields for plugin {:?} are null", self.path);
 | 
			
		||||
                self.disable();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        self.syms = Some(symbols);
 | 
			
		||||
        self.lib = Some(lib);
 | 
			
		||||
        println!("INFO: Loading OK");
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }
 | 
			
		||||
    pub fn syms(&self) -> PluginSyms {
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +96,9 @@ impl Plugin {
 | 
			
		|||
            String::from_raw_parts(buf, len, cap)
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        println!("Polled: {}", s);
 | 
			
		||||
        if !s.is_empty() {
 | 
			
		||||
            log::debug!("Polled: {}", s);
 | 
			
		||||
        }
 | 
			
		||||
        Ok(s)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user