yesod-mirror/tools/fake_sops.py

46 lines
1.2 KiB
Python
Raw Permalink Normal View History

import json
import sys
import yaml
def deeply_obfuscate(data):
if isinstance(data, dict):
return {k: deeply_obfuscate(v) for k, v in data.items()}
elif isinstance(data, list):
return [deeply_obfuscate(v) for v in data]
elif isinstance(data, str) and data.startswith("ENC["):
return "fake-secret"
else:
return data
def main():
if len(sys.argv) != 3:
print("Usage: fake_sops.py <input_file> <output_file>", file=sys.stderr)
sys.exit(1)
input_file = sys.argv[1]
output_file = sys.argv[2]
with open(input_file, 'r') as f:
content = f.read()
try:
data = json.loads(content)
except json.JSONDecodeError:
try:
data = yaml.safe_load(content)
except yaml.YAMLError as e:
print(f"Error parsing input file as JSON or YAML: {e}", file=sys.stderr)
sys.exit(1)
obfuscated_data = deeply_obfuscate(data)
# Remove sops metadata
if "sops" in obfuscated_data:
del obfuscated_data["sops"]
with open(output_file, 'w') as f:
json.dump(obfuscated_data, f, indent=2)
if __name__ == "__main__":
main()