"""
Support for Eix
"""

import salt.utils.path


def __virtual__():
    """
    Only works on Gentoo systems with eix installed
    """
    if __grains__["os"] == "Gentoo" and salt.utils.path.which("eix"):
        return "eix"
    return (
        False,
        "The eix execution module cannot be loaded: either the system is not Gentoo or"
        " the eix binary is not in the path.",
    )


def sync():
    """
    Sync portage/overlay trees and update the eix database

    CLI Example:

    .. code-block:: bash

        salt '*' eix.sync
    """
    cmd = 'eix-sync -q -C "--ask" -C "n"'
    if "makeconf.features_contains" in __salt__ and __salt__[
        "makeconf.features_contains"
    ]("webrsync-gpg"):
        # GPG sign verify is supported only for "webrsync"
        if salt.utils.path.which(
            "emerge-delta-webrsync"
        ):  # We prefer 'delta-webrsync' to 'webrsync'
            cmd += " -W"
        else:
            cmd += " -w"
        return __salt__["cmd.retcode"](cmd) == 0
    else:
        if __salt__["cmd.retcode"](cmd) == 0:
            return True
        # We fall back to "webrsync" if "rsync" fails for some reason
        if salt.utils.path.which(
            "emerge-delta-webrsync"
        ):  # We prefer 'delta-webrsync' to 'webrsync'
            cmd += " -W"
        else:
            cmd += " -w"
        return __salt__["cmd.retcode"](cmd) == 0


def update():
    """
    Update the eix database

    CLI Example:

    .. code-block:: bash

        salt '*' eix.update
    """
    cmd = "eix-update --quiet"
    return __salt__["cmd.retcode"](cmd) == 0
