@@ -25,7 +25,7 @@ pub struct Args {
2525 pub descriptor : String ,
2626 /// Wallet change descriptor
2727 #[ clap( env = "CHANGE_DESCRIPTOR" ) ]
28- pub change_descriptor : String ,
28+ pub change_descriptor : Option < String > ,
2929 /// Earliest block height to start sync from
3030 #[ clap( env = "START_HEIGHT" , long, default_value = "0" ) ]
3131 pub start_height : u32 ,
@@ -90,15 +90,20 @@ fn main() -> anyhow::Result<()> {
9090 Store :: < bdk_wallet:: ChangeSet > :: open_or_create_new ( DB_MAGIC . as_bytes ( ) , args. db_path ) ?;
9191 let wallet_opt = Wallet :: load ( )
9292 . descriptor ( KeychainKind :: External , Some ( args. descriptor . clone ( ) ) )
93- . descriptor ( KeychainKind :: Internal , Some ( args. change_descriptor . clone ( ) ) )
93+ . descriptor ( KeychainKind :: Internal , args. change_descriptor . clone ( ) )
9494 . extract_keys ( )
9595 . check_network ( args. network )
9696 . load_wallet ( & mut db) ?;
9797 let mut wallet = match wallet_opt {
9898 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+ } ,
102107 } ;
103108 println ! (
104109 "Loaded wallet in {}s" ,
0 commit comments