1use std::path::PathBuf;
5
6use crate::IndexerArgs;
7#[cfg(feature = "benchmark")]
8use crate::benchmark::BenchmarkArgs;
9use clap::Subcommand;
10use sui_indexer_alt_framework::{ingestion::ClientArgs, postgres::DbArgs};
11use sui_indexer_alt_metrics::MetricsArgs;
12use url::Url;
13
14#[derive(clap::Parser, Debug, Clone)]
15pub struct Args {
16 #[command(subcommand)]
17 pub command: Command,
18}
19
20#[allow(clippy::large_enum_variant)]
21#[derive(Subcommand, Clone, Debug)]
22pub enum Command {
23 Indexer {
25 #[clap(
27 long,
28 default_value = "postgres://postgres:postgrespw@localhost:5432/sui_indexer_alt"
29 )]
30 database_url: Url,
31
32 #[command(flatten)]
33 db_args: DbArgs,
34
35 #[command(flatten)]
36 client_args: ClientArgs,
37
38 #[command(flatten)]
39 indexer_args: IndexerArgs,
40
41 #[command(flatten)]
42 metrics_args: MetricsArgs,
43
44 #[arg(long)]
46 config: PathBuf,
47 },
48
49 GenerateConfig,
51
52 MergeConfigs {
55 #[arg(long, required = true, action = clap::ArgAction::Append)]
57 config: Vec<PathBuf>,
58 },
59
60 ResetDatabase {
62 #[clap(
64 long,
65 default_value = "postgres://postgres:postgrespw@localhost:5432/sui_indexer_alt"
66 )]
67 database_url: Url,
68
69 #[command(flatten)]
70 db_args: DbArgs,
71
72 #[clap(long, default_value_t = false)]
75 skip_migrations: bool,
76 },
77
78 #[cfg(feature = "benchmark")]
83 Benchmark {
84 #[clap(
86 long,
87 default_value = "postgres://postgres:postgrespw@localhost:5432/sui_indexer_alt"
88 )]
89 database_url: Url,
90
91 #[command(flatten)]
92 db_args: DbArgs,
93
94 #[command(flatten)]
95 benchmark_args: BenchmarkArgs,
96
97 #[arg(long)]
99 config: PathBuf,
100 },
101}