@@ -25,7 +25,7 @@ pub struct Args {
25
25
pub descriptor : String ,
26
26
/// Wallet change descriptor
27
27
#[ clap( env = "CHANGE_DESCRIPTOR" ) ]
28
- pub change_descriptor : String ,
28
+ pub change_descriptor : Option < String > ,
29
29
/// Earliest block height to start sync from
30
30
#[ clap( env = "START_HEIGHT" , long, default_value = "0" ) ]
31
31
pub start_height : u32 ,
@@ -90,15 +90,20 @@ fn main() -> anyhow::Result<()> {
90
90
Store :: < bdk_wallet:: ChangeSet > :: open_or_create_new ( DB_MAGIC . as_bytes ( ) , args. db_path ) ?;
91
91
let wallet_opt = Wallet :: load ( )
92
92
. descriptor ( KeychainKind :: External , Some ( args. descriptor . clone ( ) ) )
93
- . descriptor ( KeychainKind :: Internal , Some ( args. change_descriptor . clone ( ) ) )
93
+ . descriptor ( KeychainKind :: Internal , args. change_descriptor . clone ( ) )
94
94
. extract_keys ( )
95
95
. check_network ( args. network )
96
96
. load_wallet ( & mut db) ?;
97
97
let mut wallet = match wallet_opt {
98
98
Some ( wallet) => wallet,
99
- None => Wallet :: create ( args. descriptor , args. change_descriptor )
100
- . network ( args. network )
101
- . create_wallet ( & mut db) ?,
99
+ None => match & args. change_descriptor {
100
+ Some ( change_desc) => Wallet :: create ( args. descriptor . clone ( ) , change_desc. clone ( ) )
101
+ . network ( args. network )
102
+ . create_wallet ( & mut db) ?,
103
+ None => Wallet :: create_single ( args. descriptor . clone ( ) )
104
+ . network ( args. network )
105
+ . create_wallet ( & mut db) ?,
106
+ } ,
102
107
} ;
103
108
println ! (
104
109
"Loaded wallet in {}s" ,
0 commit comments