llvm/libc/newhdrgen/yaml_functions_sorted.py

# ex: python3 sort_yaml_functions.py
# ex: must be within yaml directory
import yaml
import os


def sort_yaml_functions(yaml_file):
    with open(yaml_file, "r") as f:
        yaml_data = yaml.load(f, Loader=yaml.FullLoader)

    if "functions" in yaml_data:
        yaml_data["functions"].sort(key=lambda x: x["name"])

    class IndentYamlListDumper(yaml.Dumper):
        def increase_indent(self, flow=False, indentless=False):
            return super(IndentYamlListDumper, self).increase_indent(flow, False)

    with open(yaml_file, "w") as f:
        yaml.dump(
            yaml_data,
            f,
            Dumper=IndentYamlListDumper,
            default_flow_style=False,
            sort_keys=False,
        )


def main():
    current_directory = os.getcwd()
    yaml_files = [
        file for file in os.listdir(current_directory) if file.endswith(".yaml")
    ]

    for yaml_file in yaml_files:
        sort_yaml_functions(yaml_file)


if __name__ == "__main__":
    main()