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