xref: /DADK/dadk/src/console/mod.rs (revision c6f35e8aa5fda2a3004763828fb91c7762df6087)
1eaa67f3cSLoGin use clap::{Parser, Subcommand};
2eaa67f3cSLoGin use rootfs::RootFSCommand;
3eaa67f3cSLoGin use user::UserCommand;
4eaa67f3cSLoGin 
5eaa67f3cSLoGin pub mod rootfs;
6eaa67f3cSLoGin #[cfg(test)]
7eaa67f3cSLoGin mod tests;
8eaa67f3cSLoGin pub mod user;
9eaa67f3cSLoGin 
10eaa67f3cSLoGin #[derive(Debug, Parser, Clone)]
11eaa67f3cSLoGin #[command(author, version, about)]
12eaa67f3cSLoGin pub struct CommandLineArgs {
13eaa67f3cSLoGin     /// 要执行的操作
14eaa67f3cSLoGin     #[command(subcommand)]
15eaa67f3cSLoGin     pub action: Action,
16eaa67f3cSLoGin 
17eaa67f3cSLoGin     /// dadk manifest 配置文件的路径
18eaa67f3cSLoGin     #[arg(
19eaa67f3cSLoGin         short = 'f',
20eaa67f3cSLoGin         long = "manifest",
21eaa67f3cSLoGin         default_value = "dadk-manifest.toml",
22eaa67f3cSLoGin         global = true
23eaa67f3cSLoGin     )]
24eaa67f3cSLoGin     pub manifest_path: String,
25eaa67f3cSLoGin 
26eaa67f3cSLoGin     /// DADK 的工作目录
27eaa67f3cSLoGin     #[arg(short = 'w', long = "workdir", default_value = ".", global = true)]
28eaa67f3cSLoGin     pub workdir: String,
29eaa67f3cSLoGin }
30eaa67f3cSLoGin 
31eaa67f3cSLoGin #[derive(Debug, Subcommand, Clone, PartialEq, Eq)]
32eaa67f3cSLoGin pub enum Action {
33*c6f35e8aSLoGin     /// 内核相关操作
34eaa67f3cSLoGin     Kernel,
35*c6f35e8aSLoGin     /// 对 rootfs 进行操作
36eaa67f3cSLoGin     #[command(subcommand, name = "rootfs")]
37eaa67f3cSLoGin     Rootfs(RootFSCommand),
38*c6f35e8aSLoGin     /// 用户程序构建相关操作
39eaa67f3cSLoGin     #[command(subcommand, name = "user")]
40eaa67f3cSLoGin     User(UserCommand),
41eaa67f3cSLoGin }
42