# Copyright 2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

from portage.package.ebuild._ipc.IpcCommand import IpcCommand


class ExitCommand(IpcCommand):
    __slots__ = (
        "exitcode",
        "reply_hook",
    )

    def __init__(self):
        IpcCommand.__init__(self)
        self.reply_hook = None
        self.exitcode = None

    def __call__(self, argv):
        if self.exitcode is not None:
            # Ignore all but the first call, since if die is called
            # then we certainly want to honor that exitcode, even
            # the ebuild process manages to send a second exit
            # command.
            self.reply_hook = None
        else:
            self.exitcode = int(argv[1])

        # (stdout, stderr, returncode)
        return ("", "", 0)
