diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/etoolkit/__init__.py | 2 | ||||
| -rw-r--r-- | src/etoolkit/etoolkit.py | 18 |
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 @@ | |||
| 18 | from .etoolkit import EtoolkitInstance, EtoolkitInstanceError | 18 | from .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: |
