initrd/src/main.rs
Mikaël Cluseau 5b033bf5ab wip
2024-06-28 21:54:17 +02:00

52 lines
1.2 KiB
Rust

mod bootstrap;
mod lsblk;
mod lvm;
use anyhow::format_err;
use log::error;
use std::io::{self, Read, Write};
use std::process::exit;
use std::{env, fs};
#[tokio::main(flavor = "current_thread")]
async fn main() -> anyhow::Result<()> {
if let None = env::var_os("RUST_LOG") {
env::set_var("RUST_LOG", "info");
}
env_logger::init();
if let Some(arg) = env::args().into_iter().nth(1) {
match arg.as_str() {
"hello" => println!("hello"),
_ => {
error!("invalid arg: {arg}");
exit(1);
}
};
exit(0);
}
let cfg = fs::read("config.yaml").map_err(|e| format_err!("failed to read config: {e}"))?;
let cfg: bootstrap::config::Config = serde_yaml::from_slice(cfg.as_slice())
.map_err(|e| format_err!("failed to parse config: {e}"))?;
serde_yaml::to_writer(io::stdout(), &cfg)?;
for pv in lvm::pvs().unwrap() {
println!("pv: {pv:?}");
}
for vg in lvm::vgs().unwrap() {
println!("vg: {vg:?}");
}
for lv in lvm::lvs().unwrap() {
println!("lv: {lv:?}");
}
println!("lsblk: {:?}", lsblk::report());
// TODO
Ok(())
}