cargo_oci/
cli.rs

1use anstyle::{AnsiColor, Color, Style};
2use clap::{Parser, Subcommand, builder::Styles};
3use clap_verbosity_flag::{InfoLevel, Verbosity};
4
5/// Styles for CLI
6fn get_styles() -> Styles {
7  Styles::styled()
8    .header(
9      Style::new()
10        .bold()
11        .underline()
12        .fg_color(Some(Color::Ansi(AnsiColor::Blue))),
13    )
14    .literal(Style::new().bold().fg_color(Some(Color::Ansi(AnsiColor::Cyan))))
15    .usage(
16      Style::new()
17        .bold()
18        .underline()
19        .fg_color(Some(Color::Ansi(AnsiColor::Blue))),
20    )
21    .placeholder(Style::new().bold().fg_color(Some(Color::Ansi(AnsiColor::Magenta))))
22}
23
24/// cargo-oci - Build and deploy Rust applications
25#[derive(Debug, Parser)]
26#[command(author, about, version)]
27#[command(propagate_version = true)]
28#[command(styles=get_styles())]
29pub struct Cli {
30  #[command(subcommand)]
31  pub commands: Commands,
32
33  #[clap(flatten)]
34  pub verbose: Verbosity<InfoLevel>,
35}
36
37#[derive(Debug, Subcommand)]
38pub enum Commands {
39  #[command(arg_required_else_help = true)]
40  Publish(crate::PublishInput),
41}