diff --git a/deploy/envparse.py b/deploy/envparse.py index 50f0ea7..e5739d6 100644 --- a/deploy/envparse.py +++ b/deploy/envparse.py @@ -15,12 +15,26 @@ def parse_env(path): pairs.append((k, v)) return pairs +def merge_envs(base_path, override_path): + """Merge two env files. Keys in override_path win over base_path.""" + base = dict(parse_env(base_path)) + override = dict(parse_env(override_path)) + merged = {**base, **override} + return list(merged.items()) + mode = sys.argv[1] if mode == 'export': for k, v in parse_env(sys.argv[2]): print('export {}={}'.format(k, repr(v))) +elif mode == 'export_merged': + # export_merged + for k, v in merge_envs(sys.argv[2], sys.argv[3]): + print('export {}={}'.format(k, repr(v))) elif mode == 'vars': print(' '.join('$' + k for k, v in parse_env(sys.argv[2]))) +elif mode == 'vars_merged': + # vars_merged + print(' '.join('$' + k for k, v in merge_envs(sys.argv[2], sys.argv[3]))) elif mode == 'strip': t = sys.stdin.read() t = re.sub(r'[ \t]*env_file:[ \t]*\n([ \t]+-[^\n]*\n)+', '', t)