#!/usr/bin/env python3
import json
import os
import re
from subprocess import check_output
from typing import Dict, List


def get_json_filename(locale: str) -> str:
    return f"locale/{locale}/mobile.json"


def get_locales() -> List[str]:
    output = check_output(["git", "ls-files", "locale"], text=True)
    tracked_files = output.split()
    regex = re.compile(r"locale/(\w+)/LC_MESSAGES/django.po")
    locales = ["en"]
    for tracked_file in tracked_files:
        matched = regex.search(tracked_file)
        if matched:
            locales.append(matched.group(1))

    return locales


def get_translation_stats(resource_path: str) -> Dict[str, int]:
    with open(resource_path) as raw_resource_file:
        raw_info = json.load(raw_resource_file)

    total = len(raw_info)
    not_translated = len([i for i in raw_info.items() if i[1] == ""])
    return {"total": total, "not_translated": not_translated}


translation_stats: Dict[str, Dict[str, int]] = {}
locale_paths = []  # List[str]
for locale in get_locales():
    path = get_json_filename(locale)
    if os.path.exists(path):
        stats = get_translation_stats(path)
        translation_stats.update({locale: stats})
        locale_paths.append(path)

stats_path = os.path.join("locale", "mobile_info.json")
with open(stats_path, "w") as f:
    json.dump(translation_stats, f, indent=2, sort_keys=True)
    f.write("\n")

print("Mobile stats file created at: " + stats_path)
