summaryrefslogtreecommitdiff
path: root/morphlib/util.py
diff options
context:
space:
mode:
authorSam Thursfield <sam@afuera.me.uk>2014-09-19 15:26:36 +0000
committerSam Thursfield <sam@afuera.me.uk>2014-09-19 15:29:44 +0000
commitef3a9aa55f70d6c56a6e94be5e15b54decae1a74 (patch)
treeefa3c8c7c10be3596f0b1ae4531841e4779e7e25 /morphlib/util.py
parent359248a35948d2060dba97ef7073c155e3b9c1bb (diff)
downloadmorph-ef3a9aa55f70d6c56a6e94be5e15b54decae1a74.tar.gz
Prevent cliapp from logging env. variables with 'PASSWORD' in their name
The upstream cliapp project is not interested in this functionality right now.
Diffstat (limited to 'morphlib/util.py')
-rw-r--r--morphlib/util.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/morphlib/util.py b/morphlib/util.py
index 0d4e25dc..ae1df56a 100644
--- a/morphlib/util.py
+++ b/morphlib/util.py
@@ -13,6 +13,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+import contextlib
import itertools
import os
import re
@@ -210,6 +211,16 @@ def new_repo_caches(app): # pragma: no cover
def env_variable_is_password(key): # pragma: no cover
return 'PASSWORD' in key
+@contextlib.contextmanager
+def hide_password_environment_variables(env): # pragma: no cover
+ is_password = env_variable_is_password
+ password_env = { k:v for k,v in env.iteritems() if is_password(k) }
+ for k in password_env:
+ env[k] = '(value hidden)'
+ yield
+ for k, v in password_env.iteritems():
+ env[k] = v
+
def log_environment_changes(app, current_env, previous_env): # pragma: no cover
'''Log the differences between two environments to debug log.'''
def log_event(key, value, event):