import os
from ruamel.yaml import YAML
from pathlib import Path

def format_yaml_file(input_file, output_dir):
    # Create output directory if it doesn't exist
    Path(output_dir).mkdir(parents=True, exist_ok=True)
    
    # Read input YAML
    yaml_in = YAML(pure=True)
    with open(input_file, 'r', encoding='utf-8') as infile:
        data = yaml_in.load(infile)
    
    # Write formatted YAML
    yaml_out = YAML(pure=True)
    yaml_out.width = 4096  # Prevent line wrapping
    yaml_out.default_style = "'"  # Quote all scalars
    
    output_file = os.path.join(output_dir, os.path.basename(input_file))
    with open(output_file, 'w', encoding='utf-8', newline='\n') as outfile:
        yaml_out.dump(data, outfile)

def main():
    # Directory containing YAML files
    input_dir = 'YAML'
    output_dir = 'formatted'
    
    # Process all YAML files
    for filename in os.listdir(input_dir):
        if filename.endswith(('.yaml', '.yml')):
            input_path = os.path.join(input_dir, filename)
            print(f"Formatting: {filename}")
            format_yaml_file(input_path, output_dir)

if __name__ == '__main__':
    main()