llm_cost_ops_cli/cli/
mod.rs1use clap::{Parser, Subcommand};
2use std::path::PathBuf;
3
4#[derive(Parser)]
7#[command(name = "cost-ops")]
8#[command(about = "LLM Cost Operations Platform", long_about = None)]
9#[command(version)]
10pub struct Cli {
11 #[arg(short, long, value_name = "FILE")]
13 pub config: Option<PathBuf>,
14
15 #[arg(short, long, action = clap::ArgAction::Count)]
17 pub verbose: u8,
18
19 #[command(subcommand)]
20 pub command: Commands,
21}
22
23#[derive(Subcommand)]
24pub enum Commands {
25 Init {
27 #[arg(long)]
29 database_url: Option<String>,
30 },
31
32 Ingest {
34 #[arg(short, long)]
36 file: PathBuf,
37
38 #[arg(short, long)]
40 provider: Option<String>,
41 },
42
43 Query {
45 #[arg(long, default_value = "last-24-hours")]
47 range: String,
48
49 #[arg(long)]
51 organization: Option<String>,
52
53 #[arg(long)]
55 group_by: Option<String>,
56
57 #[arg(long, default_value = "table")]
59 output: String,
60 },
61
62 Summary {
64 #[arg(long, default_value = "last-30-days")]
66 period: String,
67
68 #[arg(long)]
70 organization: Option<String>,
71 },
72
73 Export {
75 #[arg(short, long)]
77 output: PathBuf,
78
79 #[arg(short, long, default_value = "json")]
81 format: String,
82
83 #[arg(long)]
85 period: Option<String>,
86 },
87
88 Pricing {
90 #[command(subcommand)]
91 command: PricingCommands,
92 },
93}
94
95#[derive(Subcommand)]
96pub enum PricingCommands {
97 List,
99
100 Add {
102 #[arg(long)]
104 provider: String,
105
106 #[arg(long)]
108 model: String,
109
110 #[arg(long)]
112 input_price: f64,
113
114 #[arg(long)]
116 output_price: f64,
117 },
118
119 Get {
121 #[arg(long)]
123 provider: String,
124
125 #[arg(long)]
127 model: String,
128 },
129}
130
131impl Cli {
132 pub fn parse_args() -> Self {
133 Self::parse()
134 }
135}