@@ -21,49 +21,34 @@ import
2121 chronicles,
2222 confutils,
2323 confutils/ defs,
24- confutils/ std/ net,
25- results
24+ confutils/ std/ net as confnet,
25+ json_serialization/ std/ net as jsnet,
26+ results,
27+ beacon_chain/ buildinfo,
28+ beacon_chain/ nimbus_binary_common,
2629 ],
2730 eth/ [common, net/ nat],
2831 ./ networking/ [bootnodes, eth1_enr as enr],
2932 ./ [constants, compile_info, version],
3033 ./ common/ chain_config,
3134 ./ db/ opts
3235
33- from beacon_chain/ nimbus_binary_common import setupLogging, StdoutLogKind
34-
35- export net, defs, StdoutLogKind
36-
36+ export net, defs, jsnet, nimbus_binary_common
3737const
38- # e.g.: Copyright (c) 2018-2025 Status Research & Development GmbH
39- NimbusCopyright * = " Copyright (c) 2018-" &
40- CompileDate .split ('-' )[0 ] &
41- " Status Research & Development GmbH"
4238
4339 # e.g.:
4440 # nimbus_execution_client/v0.1.0-abcdef/os-cpu/nim-a.b.c/emvc
4541 # Copyright (c) 2018-2025 Status Research & Development GmbH
4642 NimbusBuild * = " $#\p $#" % [
4743 ClientId ,
48- NimbusCopyright ,
44+ copyrights ,
4945 ]
5046
5147 NimbusHeader * = " $#\p\p Nim version $#" % [
5248 NimbusBuild ,
53- NimVersion
49+ nimBanner ()
5450 ]
5551
56- func defaultDataDir * (): string =
57- when defined (windows):
58- getHomeDir () / " AppData" / " Roaming" / " Nimbus"
59- elif defined (macosx):
60- getHomeDir () / " Library" / " Application Support" / " Nimbus"
61- else :
62- getHomeDir () / " .cache" / " nimbus"
63-
64- func defaultKeystoreDir * (): string =
65- defaultDataDir () / " keystore"
66-
6752func getLogLevels (): string =
6853 var logLevels: seq [string ]
6954 for level in LogLevel :
@@ -73,7 +58,6 @@ func getLogLevels(): string =
7358 join (logLevels, " , " )
7459
7560const
76- defaultDataDirDesc = defaultDataDir ()
7761 defaultPort = 30303
7862 defaultMetricsServerPort = 9093
7963 defaultHttpPort = 8545
@@ -106,30 +90,27 @@ type
10690 NimbusConf * = object of RootObj
10791 # # Main Nimbus configuration object
10892
109- dataDir * {.
93+ dataDirFlag * {.
11094 separator : " ETHEREUM OPTIONS:"
11195 desc: " The directory where nimbus will store all blockchain data"
112- defaultValue: defaultDataDir ()
113- defaultValueDesc: $ defaultDataDirDesc
11496 abbr: " d"
115- name: " data-dir" }: OutDir
97+ name: " data-dir" }: Option [ OutDir ]
11698
117- era1DirOpt * {.
99+ era1DirFlag * {.
118100 desc : " Directory where era1 (pre-merge) archive can be found"
119101 defaultValueDesc: " <data-dir>/era1"
120102 name: " era1-dir" }: Option [OutDir ]
121103
122- eraDirOpt * {.
104+ eraDirFlag * {.
123105 desc : " Directory where era (post-merge) archive can be found"
124106 defaultValueDesc: " <data-dir>/era"
125107 name: " era-dir" }: Option [OutDir ]
126108
127- keyStore * {.
109+ keyStoreDirFlag * {.
128110 desc : " Load one or more keystore files from this directory"
129- defaultValue: defaultKeystoreDir ()
130111 defaultValueDesc: " inside datadir"
131112 abbr: " k"
132- name: " key-store" }: OutDir
113+ name: " key-store" }: Option [ OutDir ]
133114
134115 importKey* {.
135116 desc : " Import unencrypted 32 bytes hex private key from a file"
528509 " CL which will result in a smaller memory footprint"
529510 name: " debug-beacon-sync-target-is-final" .}: bool
530511
531- of `import`:
512+ of NimbusCmd . `import`:
532513 maxBlocks* {.
533514 desc : " Maximum number of blocks to import"
534515 defaultValue: uint64 .high ()
579560 defaultValue: false
580561 name: " debug-store-slot-hashes" .}: bool
581562
582- of `import-rlp`:
563+ of NimbusCmd . `import-rlp`:
583564 blocksFile* {.
584565 argument
585566 desc : " One or more RLP encoded block(s) files"
@@ -591,6 +572,13 @@ func parseHexOrDec256(p: string): UInt256 {.raises: [ValueError].} =
591572 else :
592573 parse (p, UInt256 , 10 )
593574
575+ proc dataDir * (config: NimbusConf ): string =
576+ # TODO load network name from directory, when using custom network?
577+ string config.dataDirFlag.get (OutDir defaultDataDir (" " , config.networkId.name ()))
578+
579+ proc keyStoreDir * (config: NimbusConf ): string =
580+ string config.keyStoreDirFlag.get (OutDir config.dataDir () / " keystore" )
581+
594582func parseCmdArg (T: type NetworkId , p: string ): T
595583 {.gcsafe , raises : [ValueError ].} =
596584 parseHexOrDec256 (p)
@@ -867,11 +855,11 @@ func shareServerWithEngineApi*(conf: NimbusConf): bool =
867855func httpServerEnabled * (conf: NimbusConf ): bool =
868856 conf.wsEnabled or conf.rpcEnabled
869857
870- func era1Dir * (conf: NimbusConf ): OutDir =
871- conf.era1DirOpt .get (OutDir ( conf.dataDir. string & " / era1" ) )
858+ proc era1Dir * (conf: NimbusConf ): string =
859+ string conf.era1DirFlag .get (OutDir conf.dataDir / " era1" )
872860
873- func eraDir * (conf: NimbusConf ): OutDir =
874- conf.eraDirOpt .get (OutDir ( conf.dataDir. string & " / era" ) )
861+ proc eraDir * (conf: NimbusConf ): string =
862+ string conf.eraDirFlag .get (OutDir conf.dataDir / " era" )
875863
876864func dbOptions * (conf: NimbusConf , noKeyCache = false ): DbOptions =
877865 DbOptions .init (
@@ -897,20 +885,11 @@ func dbOptions*(conf: NimbusConf, noKeyCache = false): DbOptions =
897885proc makeConfig * (cmdLine = commandLineParams ()): NimbusConf
898886 {.raises : [CatchableError ].} =
899887 # # Note: this function is not gc-safe
900-
901- # The try/catch clause can go away when `load()` is clean
902- try :
903- {.push warning [ProveInit ]: off .}
904- result = NimbusConf .load (
905- cmdLine,
906- version = NimbusBuild ,
907- copyrightBanner = NimbusHeader
908- )
909- {.pop .}
910- except CatchableError as e:
911- raise e
912-
913- setupLogging (result .logLevel, result .logStdout, none (OutFile ))
888+ result = NimbusConf .load (
889+ cmdLine,
890+ version = NimbusBuild ,
891+ copyrightBanner = NimbusHeader
892+ )
914893
915894 processNetworkParamsAndNetworkId (result )
916895
@@ -919,11 +898,6 @@ proc makeConfig*(cmdLine = commandLineParams()): NimbusConf
919898 # if udpPort not set in cli, then
920899 result .udpPort = result .tcpPort
921900
922- # see issue #1346
923- if result .keyStore.string == defaultKeystoreDir () and
924- result .dataDir.string != defaultDataDir ():
925- result .keyStore = OutDir (result .dataDir.string / " keystore" )
926-
927901when isMainModule :
928902 # for testing purpose
929903 discard makeConfig ()
0 commit comments