from pyforgejo import AuthenticatedClient
from pyforgejo.api.repository import repo_create_status
from pyforgejo.models.create_status_option import CreateStatusOption
import json
from os import environ

client = AuthenticatedClient(base_url=environ["GITHUB_API_URL"], token=environ["GITHUB_TOKEN"])

with open('result.json', 'r') as file:
    data = json.load(file)

print("Reporting statuses acording to the following result.json")
print(json.dumps(data, indent=2))

for result in data['results']:
    attr = result['attr']
    success = result['success']
    type = result['type']
    print(f"Report status success={success} for {type} {attr}")
    response = repo_create_status.sync_detailed(
        owner="aciceri",
        repo="nixfleet",
        sha=environ["GITHUB_SHA"],
        client=client,
        body=CreateStatusOption(
            context=type,
            description=attr,
            target_url="https://git.aciceri.dev",  # FIXME
            state="success" if success else "failure"  # may be pending,success,failure,error_message
        )
    )

print("Done reporting statuses")