summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimeon Simeonov2024-12-26 22:58:37 +0100
committerSimeon Simeonov2024-12-26 22:58:37 +0100
commitbba82a86b137c73832ad7b6a397d3db24fcc625f (patch)
tree9071225331e3035da3d0f5756acf6b3cf5b1de8a /src
parent08a3280b062af83ee50fa139d7827d954907886e (diff)
Add encrypted values to ETOOLKIT_SENSITIVE implicitly2.1.0
Diffstat (limited to 'src')
-rw-r--r--src/etoolkit/__init__.py2
-rw-r--r--src/etoolkit/etoolkit.py18
2 files changed, 16 insertions, 4 deletions
diff --git a/src/etoolkit/__init__.py b/src/etoolkit/__init__.py
index 711c6ae..4cf5d6e 100644
--- a/src/etoolkit/__init__.py
+++ b/src/etoolkit/__init__.py
@@ -18,7 +18,7 @@
18from .etoolkit import EtoolkitInstance, EtoolkitInstanceError 18from .etoolkit import EtoolkitInstance, EtoolkitInstanceError
19 19
20__author__ = 'Simeon Simeonov' 20__author__ = 'Simeon Simeonov'
21__version__ = '2.0.0' 21__version__ = '2.1.0'
22__license__ = 'GPL3' 22__license__ = 'GPL3'
23 23
24 24
diff --git a/src/etoolkit/etoolkit.py b/src/etoolkit/etoolkit.py
index 9a1b47e..a933a01 100644
--- a/src/etoolkit/etoolkit.py
+++ b/src/etoolkit/etoolkit.py
@@ -43,6 +43,7 @@ class EtoolkitInstance:
43 """ 43 """
44 self._name = name 44 self._name = name
45 self._parent = None 45 self._parent = None
46 self._env = None
46 self._raw_env_variables = {} 47 self._raw_env_variables = {}
47 self._sensitive_env_variables = [] 48 self._sensitive_env_variables = []
48 self._master_password = None 49 self._master_password = None
@@ -57,9 +58,6 @@ class EtoolkitInstance:
57 self._instance_data['ETOOLKIT_PARENT'], data 58 self._instance_data['ETOOLKIT_PARENT'], data
58 ) 59 )
59 self._raw_env_variables.update(self._parent.raw_env_variables) 60 self._raw_env_variables.update(self._parent.raw_env_variables)
60 self._sensitive_env_variables.extend(
61 self._parent.sensitive_env_variables
62 )
63 if self._instance_data.get('ETOOLKIT_SENSITIVE'): 61 if self._instance_data.get('ETOOLKIT_SENSITIVE'):
64 if not isinstance(self._instance_data['ETOOLKIT_SENSITIVE'], list): 62 if not isinstance(self._instance_data['ETOOLKIT_SENSITIVE'], list):
65 raise EtoolkitInstanceError( 63 raise EtoolkitInstanceError(
@@ -399,6 +397,9 @@ class EtoolkitInstance:
399 :return: New environment dict with all macros replaced by their values 397 :return: New environment dict with all macros replaced by their values
400 :rtype: dict 398 :rtype: dict
401 """ 399 """
400 if self._env is not None:
401 return self._env
402
402 macros = { 403 macros = {
403 '%h': os.path.expanduser('~'), 404 '%h': os.path.expanduser('~'),
404 '%i': self.name, 405 '%i': self.name,
@@ -419,6 +420,8 @@ class EtoolkitInstance:
419 ) 420 )
420 if isinstance(value, str) and value.startswith('enc-val$'): 421 if isinstance(value, str) and value.startswith('enc-val$'):
421 value = self._decrypt_value(value) 422 value = self._decrypt_value(value)
423 if key not in self._sensitive_env_variables:
424 self._sensitive_env_variables.append(key)
422 if isinstance(value, str) and value.endswith(':'): 425 if isinstance(value, str) and value.endswith(':'):
423 # if 'value' ends with ':', append the existing value of 426 # if 'value' ends with ':', append the existing value of
424 # os.environ[key] after the value of 'value' 427 # os.environ[key] after the value of 'value'
@@ -434,6 +437,15 @@ class EtoolkitInstance:
434 else: 437 else:
435 # completely overwrite the existing value of os.environ[key] 438 # completely overwrite the existing value of os.environ[key]
436 new_env[key] = self.parse_value(value, macros) 439 new_env[key] = self.parse_value(value, macros)
440
441 # add the sensitive variables list of the parent (if any)
442 if self._parent is not None:
443 self._sensitive_env_variables.extend(
444 self._parent.sensitive_env_variables
445 )
446
447 self._env = new_env
448
437 return new_env 449 return new_env
438 450
439 def get_full_name(self, delimiter: str = '') -> str: 451 def get_full_name(self, delimiter: str = '') -> str: