reth_node_core/args/
datadir_args.rs1use crate::dirs::{ChainPath, DataDirPath, MaybePlatformPath};
4use clap::Args;
5use reth_chainspec::Chain;
6use std::path::PathBuf;
7
8#[derive(Debug, Args, PartialEq, Eq, Default, Clone)]
10#[command(next_help_heading = "Datadir")]
11pub struct DatadirArgs {
12 #[arg(long, value_name = "DATA_DIR", verbatim_doc_comment, default_value_t)]
20 pub datadir: MaybePlatformPath<DataDirPath>,
21
22 #[arg(
24 long = "datadir.static-files",
25 alias = "datadir.static_files",
26 value_name = "PATH",
27 verbatim_doc_comment
28 )]
29 pub static_files_path: Option<PathBuf>,
30
31 #[arg(long = "datadir.rocksdb", value_name = "PATH", verbatim_doc_comment)]
33 pub rocksdb_path: Option<PathBuf>,
34
35 #[arg(long = "datadir.pprof-dumps", value_name = "PATH", verbatim_doc_comment)]
37 pub pprof_dumps_path: Option<PathBuf>,
38}
39
40impl DatadirArgs {
41 pub fn resolve_datadir(self, chain: Chain) -> ChainPath<DataDirPath> {
43 let datadir = self.datadir.clone();
44 datadir.unwrap_or_chain_default(chain, self)
45 }
46}
47
48#[cfg(test)]
49mod tests {
50 use super::*;
51 use clap::Parser;
52
53 #[derive(Parser)]
55 struct CommandParser<T: Args> {
56 #[command(flatten)]
57 args: T,
58 }
59
60 #[test]
61 fn test_parse_datadir_args() {
62 let default_args = DatadirArgs::default();
63 let args = CommandParser::<DatadirArgs>::parse_from(["reth"]).args;
64 assert_eq!(args, default_args);
65 }
66}