about summary refs log tree commit diff
path: root/tools/gha-billing/gha-billing.py
blob: c9c09ba691ed26011fdb87dbef470094e71364ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env python3

import argparse
import os
import sys

import requests

API_URL = "https://api.github.com"


def main(api_token: str, user: str) -> None:
    s = requests.Session()
    s.headers.update({"Authorization": f"token {api_token}"})
    s.headers.update({"Accept": "application/vnd.github.v3+json"})

    res = s.get(f"{API_URL}/users/{user}/settings/billing/actions", timeout=5)
    res.raise_for_status()

    billing = res.json()

    time_remaining = billing["included_minutes"] - billing["total_minutes_used"]
    print(
        f"this cycle, {billing['total_minutes_used']} minutes have been used, and {time_remaining} minutes are remaining"
    )


if __name__ == "__main__":
    argp = argparse.ArgumentParser()
    argp.add_argument("-t", "--token-file", nargs=1, type=argparse.FileType("r"))
    argp.add_argument("-u", "--user", type=str, default="fcuny")
    args = argp.parse_args()

    if args.token_file:
        api_token = args.token_file[0].readline().strip()
    else:
        print("Must pass token file with -t/--token_file", file=sys.stderr)
        sys.exit(os.EX_USAGE)

    main(api_token, args.user)