helpers/delete_studio.py (27 lines of code) (raw):

#!/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()