#!/usr/bin/env python3

import argparse
import re
from typing import Pattern

import requests

AS_VERSION_PATTERN: Pattern[str] = re.compile(r"^\d{4}\.\d(\.\d+)*$")


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--apiKey", type=str, required=True, help="API key to authenticate at https://repo.labs.intellij.net. Can be "
                                                                  "created and found https://repo.labs.intellij.net/webapp/#/profile")
    parser.add_argument("--version", type=str, required=True, help="Version of Android Studio that should be deleted."
                                                                   "It may be a major version like 2020.3 "
                                                                   "or concrete version like 2020.3.1.4")
    args = parser.parse_args()

    if not re.match(AS_VERSION_PATTERN, args.version):
        raise Exception(f"{args.version} is invalid version. Version should match `{AS_VERSION_PATTERN.pattern}` pattern")

    response = requests.get("https://repo.labs.intellij.net/api/storage/edu-tools", headers={"X-JFrog-Art-Api": args.apiKey}).json()
    children = response["children"]
    for child in children:
        folder: bool = child["folder"]
        uri: str = child["uri"]
        if not folder and uri.startswith(f"/android-studio-{args.version}"):
            print(f"Delete {uri}")
            delete_response = requests.delete(f"https://repo.labs.intellij.net/edu-tools{uri}", headers={"X-JFrog-Art-Api": args.apiKey})
            if delete_response.status_code != 204:
                print(f"Failed to delete {uri}")


if __name__ == '__main__':
    main()
