#!/usr/bin/env python3

from sys import exit

import requests
from packaging import version

bearer = "${bearer}"
domain = "${domain}"
OK = 0
WARN = 1
CRITICAL = 2
UNKNOWN = 3

status = 3
message = "Unknown Update Status"


domain = "hass.home.kunbox.net"

s = requests.Session()
s.headers.update({"Content-Type": "application/json"})

try:
    stable_version = version.parse(
        s.get("https://version.home-assistant.io/stable.json").json()["homeassistant"][
            "generic-x86-64"
        ]
    )
    s.headers.update(
        {"Authorization": f"Bearer {bearer}", "Content-Type": "application/json"}
    )
    running_version = version.parse(
        s.get(f"https://{domain}/api/config").json()["version"]
    )
    if running_version == stable_version:
        status = 0
        message = f"OK - running version {running_version} equals stable version {stable_version}"
    elif running_version > stable_version:
        status = 1
        message = f"WARNING - stable version {stable_version} is lower than running version {running_version}, check if downgrade is necessary."
    else:
        status = 2
        message = f"CRITICAL - update necessary, running version {running_version} is lower than stable version {stable_version}"
except Exception as e:
    message = f"{message}: {repr(e)}"

print(message)
exit(status)
