import os
import re

# Directory with the font files
directory = './'

# Get list of font files
font_files = os.listdir(directory)

# Initialize an empty list for the typefaces
typefaces = []

# Loop over the font files
for file in font_files:
    # Strip the file extension
    name_weight, extension = os.path.splitext(file)
    
    # Only process .ttf, .otf, .woff and .woff2 files
    if extension.lower() not in ['.ttf', '.otf', '.woff', '.woff2']:
        continue
    
    # Split the name and weight
    match = re.match(r'(.*)_(\d+)(I)?', name_weight)
    if match:
        name, weight, is_italic = match.groups()
    else:
        name = name_weight
        weight = "400"
        is_italic = None
    
    # Check if the typeface is already in the list
    for typeface in typefaces:
        if typeface['name'] == name:
            break
    else:
        # If the typeface is not in the list, add a new one
        typeface = {
            "name": name,
            "fonts" : [],
            "tags" : ["sans-serif"],
        }
        typefaces.append(typeface)

    # Add file to the typeface
    font_descriptor = {
        'weight': weight,
        'style': 'italic' if is_italic else 'normal',
        'file': file,
        'format': 'truetype' if extension == '.ttf' else 'opentype' if extension == '.otf' else 'woff' if extension == '.woff' else 'woff2'
    }
    typeface['fonts'].append(font_descriptor)

# Create CSS files
for typeface in typefaces:
    css_content = ''

    for font in typeface['fonts']:
        css_content += f"""
@font-face {{
    font-family: '{typeface["name"]}';
    src: url('{font["file"]}') format('{font["format"]}');
    font-weight: {font["weight"]};
    font-style: {font["style"]};
}}
"""

    with open(f'{typeface["name"].lower()}.css', 'w') as f:
        f.write(css_content)