Skip to content

Instantly share code, notes, and snippets.

@fl64
Last active December 5, 2023 07:00
Show Gist options
  • Save fl64/3714fb2a85ace17de8c81ac1eca6378a to your computer and use it in GitHub Desktop.
Save fl64/3714fb2a85ace17de8c81ac1eca6378a to your computer and use it in GitHub Desktop.
CRD filter
#!/usr/bin/env python3
import argparse
import yaml
keepIt = ["description"]
def custom_represent(dumper, data):
if len(data) > 30: # Set a condition for when to use the |
return dumper.represent_scalar('tag:yaml.org,2002:str', data, style='|')
return dumper.represent_scalar('tag:yaml.org,2002:str', data)
def process_yaml_fields(data):
if not isinstance(data, dict) and not isinstance(data, list):
return
if isinstance(data,dict):
d = {}
for k,v in data.items():
if k in keepIt:
d[k] = v
else:
result = process_yaml_fields(v)
if result != None:
d[k] = process_yaml_fields(v)
if len(d) == 0:
return
return d
if isinstance(data,list):
l = []
for v in data:
result=process_yaml_fields(v)
if result != None:
l.append(result)
if len(l) == 0:
return
return l
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--input', help='Name of the input YAML file', required=True)
args = parser.parse_args()
input = args.input
with open(input, 'r') as file:
yaml_data = yaml.safe_load(file)
result = process_yaml_fields(yaml_data)
yaml.SafeDumper.add_representer(str, custom_represent)
print(yaml.safe_dump(result, default_flow_style=False))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment