Source code for seiscat.self.status

# -*- coding: utf8 -*-
# SPDX-License-Identifier: GPL-3.0-or-later
"""Status command for seiscat self."""
from __future__ import annotations

from .completion import completion_status
from .install_detection import detect_install_context
from .update import get_latest_release_version, _parse_version


def _update_state(context, latest_release):
    if not latest_release or context.version_installed == 'unknown':
        return 'unknown'
    installed = _parse_version(context.version_installed)
    latest = _parse_version(latest_release)
    return 'update available' if installed < latest else 'up to date'


[docs] def get_self_status(): """Return status dictionary for seiscat self status output.""" context = detect_install_context() latest_release = get_latest_release_version() comp = completion_status() return { 'installed_version': context.version_installed, 'installer': context.installer, 'channel': context.channel, 'latest_release': latest_release or 'unknown', 'update_state': _update_state(context, latest_release), 'completion_installed': comp['installed'], 'completion_shell': comp['shell'], 'completion_details': comp['details'], }