@@ -20,6 +20,10 @@ struct Cli {
20
20
/// If not specified, the backup will only run once
21
21
#[ arg( short, long, value_name = "CRON" ) ]
22
22
schedule : Option < String > ,
23
+
24
+ /// A Dropbox access token
25
+ #[ arg( short = 't' , long = "token" , value_name = "KEY" ) ]
26
+ dropbox_token : Option < String > ,
23
27
}
24
28
25
29
/// Runtime parameters, parsed and ready to be used
@@ -28,6 +32,8 @@ pub struct Params {
28
32
pub folder : PathBuf ,
29
33
/// An optional parsed cron expression
30
34
pub schedule : Option < Schedule > ,
35
+ /// A Dropbox access token
36
+ pub dropbox_token : String ,
31
37
}
32
38
33
39
/// Parse the command-line arguments and environment variables into runtime params
@@ -43,6 +49,10 @@ pub fn parse_config() -> Result<Params> {
43
49
. schedule
44
50
. or_else ( || env:: var ( "DOCKERBOX_SCHEDULE" ) . ok ( ) ) ;
45
51
52
+ params. dropbox_token = params
53
+ . dropbox_token
54
+ . or_else ( || env:: var ( "DOCKERBOX_TOKEN" ) . ok ( ) ) ;
55
+
46
56
let folder = params. folder . or_panic ( ) ; // Ok to unwrap due to default value
47
57
let folder = folder
48
58
. canonicalize ( )
@@ -59,5 +69,13 @@ pub fn parse_config() -> Result<Params> {
59
69
None => None ,
60
70
} ;
61
71
62
- Ok ( Params { folder, schedule } )
72
+ let Some ( dropbox_token) = params. dropbox_token else {
73
+ return Err ( anyhow ! ( "No Dropbox token was provided" ) ) ;
74
+ } ;
75
+
76
+ Ok ( Params {
77
+ folder,
78
+ schedule,
79
+ dropbox_token,
80
+ } )
63
81
}
0 commit comments