1 use std::path::PathBuf;
2
3 use clap::Parser;
4
5 #[derive(Debug, Parser, Clone)]
6 pub struct CommandLineArgs {
7 #[arg(short, long)]
8 /// The kernel ELF file to load.
9 pub kernel: PathBuf,
10
11 /// The kernel memory file to load.
12 #[arg(long, value_parser=kmem_file_parser, default_value = "/dev/shm/dragonos-qemu-shm.ram")]
13 pub kmem: String,
14
15 /// If set, the monitor will start the TUI.
16 #[arg(long, default_value = "false")]
17 pub tui: bool,
18
19 /// The directory to store the log files.
20 #[arg(long, default_value = "logs")]
21 pub log_dir: PathBuf,
22 }
23
24 /// 用于解析kmem参数的函数
kmem_file_parser(s: &str) -> Result<String, String>25 fn kmem_file_parser(s: &str) -> Result<String, String> {
26 log::warn!("kmem_file_parser: {}", s);
27 if s.len() == 0 {
28 return Ok("/dev/shm/dragonos-qemu-shm.ram".to_string());
29 } else {
30 return Ok(s.to_string());
31 }
32 }
33