1use anyhow::Result;
12use clap::{Args, Subcommand, ValueEnum};
13
14#[derive(Args)]
16pub struct RunnerArgs {
17 #[command(subcommand)]
18 pub command: RunnerCommand,
19}
20
21#[derive(Subcommand)]
22pub enum RunnerCommand {
23 Capabilities(CapabilitiesArgs),
25 List(ListArgs),
27}
28
29#[derive(Debug, Clone, Copy, Default, ValueEnum)]
31pub enum RunnerFormat {
32 #[default]
34 Text,
35 Json,
37}
38
39#[derive(Args)]
40pub struct CapabilitiesArgs {
41 pub runner: String,
43
44 #[arg(long, value_enum, default_value = "text")]
46 pub format: RunnerFormat,
47}
48
49#[derive(Args)]
50pub struct ListArgs {
51 #[arg(long, value_enum, default_value = "text")]
53 pub format: RunnerFormat,
54}
55
56pub fn handle_runner_capabilities(args: CapabilitiesArgs) -> Result<()> {
57 crate::commands::runner::capabilities::handle_capabilities(&args.runner, args.format)
58}
59
60pub fn handle_runner_list(args: ListArgs) -> Result<()> {
61 crate::commands::runner::list::handle_list(args.format)
62}