#!/usr/bin/env python3

from sys import exit

from packaging.version import parse
from requests import get

API_TOKEN = "${token}"
DOMAIN = "${domain}"

try:
    r = get("https://version.home-assistant.io/stable.json")
    r.raise_for_status()
    stable_version = parse(r.json()["homeassistant"]["generic-x86-64"])
except Exception as e:
    print(f"Could not get stable version information from home-assistant.io: {e!r}")
    exit(3)

try:
    r = get(
        f"https://{DOMAIN}/api/config",
        headers={"Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json"},
    )
    r.raise_for_status()
    running_version = parse(r.json()["version"])
except Exception as e:
    print(f"Could not get running version information from homeassistant: {e!r}")
    exit(3)

try:
    if stable_version > running_version:
        print(
            f"There is a newer version available: {stable_version} (currently installed: {running_version})"
        )
        exit(2)
    else:
        print(
            f"Currently running version {running_version} matches newest release on home-assistant.io"
        )
        exit(0)
except Exception as e:
    print(repr(e))
    exit(3)