🎮

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>
}

雑なノート

https://zenn.dev/uliboooo/scraps/872cd14704506c

参考

https://koralle.hateblo.jp/entry/2023/12/07/000624

GitHubで編集を提案

Discussion