CLI: make 'wallet_path' relative to wallets dir
If the wallet_path passed to the RPC is a simple filename, interpret it as relative to the user wallets directory, rather than to the current working directory. This is a breaking change, it might affect existing scripts
This commit is contained in:
@@ -97,6 +97,9 @@
|
||||
* CLI:
|
||||
- The command line help has been improved; parameters are
|
||||
documented in the same docstring as the command they belong to.
|
||||
- If the --wallet parameter passed to a command is a simple filename,
|
||||
it is now interpreted as relative to the users wallets directory,
|
||||
rather than to the current working directory
|
||||
- Plugins may add extra commands to the CLI. Plugin commands must
|
||||
be prefixed with the plugin's internal name
|
||||
- support for hold invoices
|
||||
|
||||
@@ -163,10 +163,8 @@ def command(s):
|
||||
password = kwargs.get('password')
|
||||
daemon = cmd_runner.daemon
|
||||
if daemon:
|
||||
if 'wallet_path' in cmd.options and kwargs.get('wallet_path') is None:
|
||||
kwargs['wallet_path'] = daemon.config.get_wallet_path()
|
||||
if cmd.requires_wallet and kwargs.get('wallet') is None:
|
||||
kwargs['wallet_path'] = daemon.config.get_wallet_path()
|
||||
if 'wallet_path' in cmd.options or cmd.requires_wallet:
|
||||
kwargs['wallet_path'] = daemon.config.maybe_complete_wallet_path(kwargs.get('wallet_path'))
|
||||
if 'wallet' in cmd.options:
|
||||
wallet_path = kwargs.pop('wallet_path', None) # unit tests may set wallet and not wallet_path
|
||||
wallet = kwargs.get('wallet', None) # run_offline_command sets both
|
||||
|
||||
@@ -458,11 +458,20 @@ class SimpleConfig(Logger):
|
||||
else:
|
||||
return self.WALLET_BACKUP_DIRECTORY
|
||||
|
||||
def maybe_complete_wallet_path(self, path: Optional[str]) -> str:
|
||||
return self._complete_wallet_path(path) if path is not None else self.get_wallet_path()
|
||||
|
||||
def _complete_wallet_path(self, path: str) -> str:
|
||||
""" add user wallets directory if needed """
|
||||
if os.path.split(path)[0] == '':
|
||||
path = os.path.join(self.get_datadir_wallet_path(), path)
|
||||
return path
|
||||
|
||||
def get_wallet_path(self) -> str:
|
||||
"""Returns the wallet path."""
|
||||
# command line -w option
|
||||
if self.get('wallet_path'):
|
||||
return os.path.join(self.get('cwd', ''), self.get('wallet_path'))
|
||||
if path:= self.get('wallet_path'):
|
||||
return self._complete_wallet_path(path)
|
||||
# current wallet
|
||||
path = self.CURRENT_WALLET
|
||||
if path and os.path.exists(path):
|
||||
|
||||
Reference in New Issue
Block a user