#!/usr/bin/env python

from __future__ import annotations

import pathlib
import tempfile

import git
import tqdm.auto
import yaml

repo_dir = pathlib.Path(__file__).parents[1]
yaml_path = repo_dir / "list.yaml"


def add_creation_timestamps() -> None:
    with open(yaml_path) as f:
        data = yaml.safe_load(f)

    space_ids = list(data.keys())
    for space_id in tqdm.auto.tqdm(space_ids):
        info = data[space_id]
        if "created" in info:
            continue
        with tempfile.TemporaryDirectory() as temp_dir:
            url = f"https://huggingface.co/spaces/{space_id}"
            repo = git.Repo.clone_from(url, temp_dir)
            commits = list(repo.iter_commits())
            initial_commit = commits[-1]
            date = initial_commit.authored_datetime
            date_str = date.strftime("%Y-%m-%dT%H:%M:%S.000Z")
            info["created"] = date_str

    with open(yaml_path, "w") as f:
        yaml.dump(data, f)


def sort_by_creation_date() -> None:
    with open(yaml_path) as f:
        data = yaml.safe_load(f)

    keys = sorted(data.keys(), key=lambda x: data[x]["created"])
    sorted_data = dict()
    for key in keys[::-1]:
        sorted_data[key] = data[key]

    with open(yaml_path, "w") as f:
        yaml.dump(sorted_data, f, sort_keys=False)


if __name__ == "__main__":
    add_creation_timestamps()
    sort_by_creation_date()