Files
entropy/client/solo/commands/yell.py
T
Fabio Erculiani 1582de0fff [Solo] First commit, equo rewrite has just begun
"Solo" is just a codename, to avoid name clashing while the code
is ported over.
2012-08-19 11:02:32 +02:00

119 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
"""
@author: Fabio Erculiani <lxnay@sabayon.org>
@contact: lxnay@sabayon.org
@copyright: Fabio Erculiani
@license: GPL-2
B{Entropy Infrastructure Toolkit}.
"""
import argparse
from entropy.i18n import _
from entropy.output import TextInterface
from entropy.cache import EntropyCacher
from solo.commands.descriptor import SoloCommandDescriptor
from solo.commands.command import SoloCommand
class SoloYell(SoloCommand):
"""
Main Solo yell command.
"""
NAME = "yell"
ALIASES = []
CATCH_ALL = True
ALLOW_UNPRIVILEGED = True
HIDDEN = True
_CACHE_KEY = "SoloYellStatus"
_MESSAGES = {
0: _("You should run equo --help"),
1: _("You didn't run equo --help, did you?"),
2: _("Did you even read equo --help??"),
3: _("I give up. Run that equo --help !!!!!!!"),
4: _("OH MY GOD. RUN equo --heeeeeeeeeeeeeelp"),
5: _("Illiteracy is a huge problem in this world"),
6: _("Ok i give up, you are hopeless"),
7: _("Go to hell."),
8: _("Go to hell."),
9: _("Go to hell."),
10: _("Go to hell."),
11: _("Go to hell."),
12: _("Stop that, you idiot."),
13: _("Go to hell."),
}
INTRODUCTION = """\
Yell at user.
"""
SEE_ALSO = "equo-help(1)"
def man(self):
"""
Overridden from SoloCommand.
"""
return self._man()
def parse(self):
"""
Parse help command
"""
return self._show_yell, []
@staticmethod
def read():
cacher = EntropyCacher()
status = cacher.pop(SoloYell._CACHE_KEY)
if status is None:
status = 0
SoloYell.write(status)
return status
@staticmethod
def write(status):
cacher = EntropyCacher()
try:
cacher.save(SoloYell._CACHE_KEY, status)
except IOError:
pass
@staticmethod
def reset():
"""
Reset Yell Status.
"""
cacher = EntropyCacher()
try:
cacher.save(SoloYell._CACHE_KEY, 0)
except IOError:
pass
def _show_yell(self, *args):
yell_id = SoloYell.read()
max_id = max(list(SoloYell._MESSAGES.keys()))
yell_message = SoloYell._MESSAGES.get(
yell_id, max_id)
# do not use entropy_client here
# it is slow and might interfere with
# other Client inits.
text = TextInterface()
text.output(
yell_message,
importance=1,
level="warning")
new_yell_id = yell_id + 1
if new_yell_id <= max_id:
SoloYell.write(new_yell_id)
return 1
SoloCommandDescriptor.register(
SoloCommandDescriptor(
SoloYell,
SoloYell.NAME,
_("yell at user"))
)