🎮
rustのclapでサブコマンドを実装
clap
構成
enumでサブコマンドをリスト、サブコマンド自体(引数とかオプション)は別のstructで定義、サブコマンドをリストしたenumの各バリアントにサブコマンドのstructを入れる。
#[derive(Debug, Parser)]
struct Cli {
#[command(subcommand)]
subcommand: Commands,
}
#[derive(Debug, Subcommand)]
enum Commands {
/// initialize
Init(Init),
/// create new
Create(Create),
/// delete
Delete(Delete),
/// show list
List(List),
}
#[derive(Debug, Args)]
struct Init {
name: Option<String>,
#[arg(short = 'p', long = "path")]
path: Option<String>,
}
#[derive(Debug, Args)]
struct Create {
name: String,
}
#[derive(Debug, Args)]
struct Delete {
issue_num: u64,
#[arg(short = 'u', long = "unresolved")]
unresolved: bool,
}
#[derive(Debug, Args)]
struct List {
target_title: Option<String>
}
雑なノート
参考
Discussion