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