1use anyhow::Result;
2use clap::Parser;
3
4#[derive(Debug, Parser)]
5#[clap(about, version)]
6pub struct Opts {
7 #[clap(short, long)]
8 pub debug: bool,
9
10 #[clap(subcommand)]
11 pub cmd: Subcommand,
12}
13
14#[derive(Debug, Eq, PartialEq, Parser)]
15pub enum Subcommand {
16 #[clap(alias = "s")]
18 Search {
19 #[clap(required = true)]
21 query: String,
22 #[clap(short, long, default_value_t = 10)]
24 limit: u8,
25 },
26 #[clap(alias = "i")]
28 Info {
29 #[clap(required = true)]
31 symbol: String,
32 #[clap(short, long)]
34 all: bool,
35 #[clap(short, long)]
37 financials: bool,
38 #[clap(short, long)]
40 structure: bool,
41 #[clap(short, long)]
43 dividends: bool,
44 #[clap(short, long)]
46 presses: bool,
47 },
48 #[clap(alias = "q")]
50 Quote {
51 #[clap(required = true)]
53 symbol: String,
54 #[clap(short, long)]
56 no_check: bool,
57 #[clap(short, long)]
59 realtime: bool,
60 #[clap(short, long)]
62 multiline: bool,
63 },
64}
65
66impl Opts {
67 pub fn parse_args() -> Result<Self> {
68 let opts = Self::parse();
69 Ok(opts)
70 }
71}