# -*- coding: utf-8 -*-
import os
from ffsubsync.constants import SUBSYNC_RESOURCES_ENV_MAGIC
from ffsubsync._version import get_versions

__version__ = get_versions()["version"]
del get_versions


def get_version():
    if "unknown" in __version__.lower():
        with open(
            os.path.join(os.environ[SUBSYNC_RESOURCES_ENV_MAGIC], "__version__")
        ) as f:
            return f.read().strip()
    else:
        return __version__


def make_version_tuple(vstr=None):
    if vstr is None:
        vstr = __version__
    if vstr[0] == "v":
        vstr = vstr[1:]
    components = []
    for component in vstr.split("+")[0].split("."):
        try:
            components.append(int(component))
        except ValueError:
            break
    return tuple(components)


def update_available():
    import requests
    from requests.exceptions import Timeout
    from .constants import API_RELEASE_URL

    try:
        resp = requests.get(API_RELEASE_URL, timeout=1)
        latest_vstr = resp.json()["tag_name"]
    except Timeout:
        return False
    except KeyError:
        return False
    if not resp.ok:
        return False
    return make_version_tuple(get_version()) < make_version_tuple(latest_vstr)