#!/usr/bin/env python3

from requests import get
from sys import exit

api_key = '${api_key}'

try:
    json = get('http://[::1]:22030/plugin/softwareupdate/check', headers={'X-Api-Key': api_key}).json()
except Exception as e:
    print(repr(e))
    exit(3)

updates = set()
errors = set()

for identifier, info in json['information'].items():
    if info['updateAvailable']:
        updates.add(info['displayName'])

if not json['environment']['supported']:
    errors.add('OctoPrint runs in an unsupported environment!')

if not json['storage']['sufficient']:
    errors.add('OctoPrint reports insufficient storage!')


for error in sorted(errors):
    print(error)

if len(updates) > 0:
    print('Updates available: {}'.format(', '.join(sorted(updates))))


if len(errors) > 0:
    exit(2)
elif len(updates) > 0:
    exit(1)
else:
    print('OK')
    exit(0)