forked from AbleOS/ableos
53 lines
1.4 KiB
Rust
53 lines
1.4 KiB
Rust
use log::LevelFilter;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Serialize, Debug, Deserialize)]
|
|
pub enum LogLevel {
|
|
/// A level lower than all log levels.
|
|
Off,
|
|
/// Corresponds to the `Error` log level.
|
|
Error,
|
|
/// Corresponds to the `Warn` log level.
|
|
Warn,
|
|
/// Corresponds to the `Info` log level.
|
|
Info,
|
|
/// Corresponds to the `Debug` log level.
|
|
Debug,
|
|
/// Corresponds to the `Trace` log level.
|
|
Trace,
|
|
}
|
|
|
|
#[derive(Serialize, Debug, Deserialize)]
|
|
pub struct BootConfig {
|
|
pub logging_level: LogLevel,
|
|
pub logger_padding: usize,
|
|
pub run_tests: bool,
|
|
pub run_demos: bool,
|
|
pub run_shader_tests: bool,
|
|
}
|
|
|
|
impl BootConfig {
|
|
pub fn new() -> Self {
|
|
let data = include_str!("../assets/kernel_config.json");
|
|
|
|
// Parse the string of data into a Person object. This is exactly the
|
|
// same function as the one that produced serde_json::Value above, but
|
|
// now we are asking it for a Person as output.
|
|
let p: BootConfig = serde_json::from_str(data).unwrap();
|
|
// info!("{:?}", p);
|
|
p
|
|
}
|
|
|
|
pub fn log_level(&self) -> LevelFilter {
|
|
use LevelFilter::*;
|
|
match self.logging_level {
|
|
LogLevel::Off => Off,
|
|
LogLevel::Error => Error,
|
|
LogLevel::Warn => Warn,
|
|
LogLevel::Info => Info,
|
|
LogLevel::Debug => Debug,
|
|
LogLevel::Trace => Trace,
|
|
}
|
|
}
|
|
}
|