@@ -5,9 +5,9 @@ use structopt::StructOpt;
5
5
pub struct Config {
6
6
#[ structopt( flatten) ]
7
7
pub discovery : DiscoveryConfig ,
8
- #[ structopt( skip ) ]
8
+ #[ structopt( flatten ) ]
9
9
pub subscription : SubscriptionConfig ,
10
- #[ structopt( skip ) ]
10
+ #[ structopt( flatten ) ]
11
11
pub events : EventsConfig ,
12
12
}
13
13
@@ -33,37 +33,40 @@ pub struct SubscriptionConfig {
33
33
pub default_ttl : chrono:: Duration ,
34
34
}
35
35
36
- #[ derive( Clone ) ]
36
+ #[ derive( StructOpt , Clone ) ]
37
37
pub struct EventsConfig {
38
+ #[ structopt( env = "MAX_MARKET_EVENTS_DEFAULT" , default_value = "20" ) ]
38
39
pub max_events_default : i32 ,
40
+ #[ structopt( env = "MAX_MARKET_EVENTS_MAX" , default_value = "100" ) ]
39
41
pub max_events_max : i32 ,
40
42
}
41
43
42
44
impl Config {
43
45
pub fn from_env ( ) -> Result < Config , structopt:: clap:: Error > {
44
- // Mock command line arguments, because we want to use ENV fallback
45
- // or default values if ENV variables don't exist .
46
- Ok ( Config :: from_iter_safe ( vec ! [ "yagna" ] . iter ( ) ) ?)
46
+ // Empty command line arguments, because we want to use ENV fallback
47
+ // or default values if ENV variables are not set .
48
+ Ok ( Config :: from_iter_safe ( & [ "" ] ) ?)
47
49
}
48
50
}
49
51
50
- impl Default for SubscriptionConfig {
51
- fn default ( ) -> Self {
52
- SubscriptionConfig {
53
- default_ttl : chrono:: Duration :: seconds ( 50 ) ,
54
- }
55
- }
52
+ fn parse_chrono_duration ( s : & str ) -> Result < chrono:: Duration , anyhow:: Error > {
53
+ Ok ( chrono:: Duration :: from_std ( humantime:: parse_duration ( s) ?) ?)
56
54
}
57
55
58
- impl Default for EventsConfig {
59
- fn default ( ) -> Self {
60
- EventsConfig {
61
- max_events_default : 20 ,
62
- max_events_max : 100 ,
63
- }
56
+ #[ cfg( test) ]
57
+ mod test {
58
+ use super :: Config ;
59
+
60
+ #[ test]
61
+ fn test_default_structopt_subscription_ttl ( ) {
62
+ let c = Config :: from_env ( ) . unwrap ( ) ;
63
+ assert_eq ! ( 60 , c. subscription. default_ttl. num_minutes( ) ) ;
64
64
}
65
- }
66
65
67
- fn parse_chrono_duration ( s : & str ) -> Result < chrono:: Duration , anyhow:: Error > {
68
- Ok ( chrono:: Duration :: from_std ( humantime:: parse_duration ( s) ?) ?)
66
+ #[ test]
67
+ fn test_default_structopt_events ( ) {
68
+ let c = Config :: from_env ( ) . unwrap ( ) ;
69
+ assert_eq ! ( 20 , c. events. max_events_default) ;
70
+ assert_eq ! ( 100 , c. events. max_events_max) ;
71
+ }
69
72
}
0 commit comments