From bb9a844e22134a2537652ea14f93e82acb4ee380 Mon Sep 17 00:00:00 2001 From: Simeon Simeonov Date: Tue, 30 Apr 2024 15:39:29 +0200 Subject: Improve tests --- src/etoolkit/__main__.py | 14 +++++++++++--- src/etoolkit/etoolkit.py | 19 ++++++++++++------- 2 files changed, 23 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/etoolkit/__main__.py b/src/etoolkit/__main__.py index fba9dc7..8b5bd55 100644 --- a/src/etoolkit/__main__.py +++ b/src/etoolkit/__main__.py @@ -319,7 +319,13 @@ def main(inargs=None): sys.exit(0) inst = etoolkit.EtoolkitInstance(args.instance, config_dict) - inst.prompt_func = etoolkit.EtoolkitInstance.confirm_password_prompt + if ( + args.master_password_prompt + or os.environ.get('ETOOLKIT_MASTER_PASSWORD') is None + ): + inst.prompt_func = ( + etoolkit.EtoolkitInstance.confirm_password_prompt + ) env = inst.get_environ() if args.dump_output: @@ -328,9 +334,11 @@ def main(inargs=None): os.environ.update(env) if args.spawn: - subprocess.run(args.spawn.split(), check=True) + subprocess.run(args.spawn.split(), check=False) else: - subprocess.run(os.environ.get('SHELL', 'bash').split(), check=True) + subprocess.run( + os.environ.get('SHELL', 'bash').split(), check=False + ) except KeyboardInterrupt: logger.debug('KeyboardInterrupt') print(os.linesep) diff --git a/src/etoolkit/etoolkit.py b/src/etoolkit/etoolkit.py index 870a4be..a2e0d7a 100644 --- a/src/etoolkit/etoolkit.py +++ b/src/etoolkit/etoolkit.py @@ -385,7 +385,7 @@ class EtoolkitInstance: if self._parent is not None else '' ) - if isinstance(value, str) and value.startswith('enc-val$1$'): + if isinstance(value, str) and value.startswith('enc-val$'): value = self._decrypt_value(value) if isinstance(value, str) and value.endswith(':'): # if 'value' ends with ':', append the existing value of @@ -440,11 +440,16 @@ class EtoolkitInstance: """ if self._master_password is None: if self._prompt_func is None: - raise EtoolkitInstanceError( - 'Neither password or prompt function set' + if ( + mp_from_env := os.environ.get('ETOOLKIT_MASTER_PASSWORD') + ) is None: + raise EtoolkitInstanceError( + 'Neither password or prompt function set' + ) + self.master_password = mp_from_env + else: + # use master_password setter in order to propagate to parent + self.master_password = self._prompt_func( + self._master_password_hash, confirm=False ) - # use master_password setter in order to propagate to parent - self.master_password = self._prompt_func( - self._master_password_hash, confirm=False - ) return EtoolkitInstance.decrypt(self._master_password, evalue) -- cgit v1.3