|
|
|
from .base import Command, Content
|
|
|
|
from ...exceptions import InvalidInput
|
|
|
|
|
|
|
|
|
|
|
|
def dialog(message, height=15, title="Message", width=100, **kwargs):
|
|
|
|
"""Display a graphical feedback box to the user. Note that the ``dialog`` command must be available.
|
|
|
|
|
|
|
|
:param message: The message to be displayed.
|
|
|
|
:type message: str
|
|
|
|
|
|
|
|
:param height: The height of the dialog box.
|
|
|
|
:type height: int
|
|
|
|
|
|
|
|
:param title: The title displayed.
|
|
|
|
:type title: str
|
|
|
|
|
|
|
|
:param width: The width of the dialog box.
|
|
|
|
:type width: int
|
|
|
|
|
|
|
|
"""
|
|
|
|
statement = list()
|
|
|
|
statement.append("dialog --clear")
|
|
|
|
statement.append('--backtitle "%s"' % title)
|
|
|
|
statement.append('--msgbox "%s" %s %s;' % (message, height, width))
|
|
|
|
statement.append("clear;")
|
|
|
|
|
|
|
|
return Command(" ".join(statement), **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def echo(message, **kwargs):
|
|
|
|
"""Display a message.
|
|
|
|
|
|
|
|
:param message: The message to be displayed.
|
|
|
|
:type message: str
|
|
|
|
|
|
|
|
"""
|
|
|
|
return Command('echo "%s"' % message, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def explain(message, heading=None, **kwargs):
|
|
|
|
"""Create an explanation for documentation.
|
|
|
|
|
|
|
|
:param message: The message to be displayed.
|
|
|
|
:type message: str
|
|
|
|
|
|
|
|
:param heading: Optional heading for the output.
|
|
|
|
:type heading: str
|
|
|
|
|
|
|
|
"""
|
|
|
|
return Content("explain", message=message, heading=heading, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def mattermost(message, url=None, **kwargs):
|
|
|
|
"""Send a message to a Mattermost channel.
|
|
|
|
|
|
|
|
:param message: The message to be sent.
|
|
|
|
:type message: str
|
|
|
|
|
|
|
|
:param url: The URL of the Mattermost channel.
|
|
|
|
:type url: str
|
|
|
|
|
|
|
|
"""
|
|
|
|
if url is None:
|
|
|
|
raise InvalidInput("mattermost command requires a url parameter.")
|
|
|
|
|
|
|
|
statement = list()
|
|
|
|
statement.append("curl -X POST -H 'Content-type: application/json' --data")
|
|
|
|
statement.append('\'{"text": "%s"}\'' % message)
|
|
|
|
statement.append(url)
|
|
|
|
|
|
|
|
return Command(" ".join(statement), **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def screenshot(image, caption=None, css=None, height=None, width=None, **kwargs):
|
|
|
|
"""Create a screenshot for documentation.
|
|
|
|
|
|
|
|
:param image: The URL or path to the image file.
|
|
|
|
:type image: str
|
|
|
|
|
|
|
|
:param caption: A caption for the image.
|
|
|
|
:type caption: str
|
|
|
|
|
|
|
|
:param css: CSS classes to be applied to the image tag.
|
|
|
|
:type css: str
|
|
|
|
|
|
|
|
:param height: The maximum height of the image.
|
|
|
|
:type height: int
|
|
|
|
|
|
|
|
:param width: The maximum widht of the image.
|
|
|
|
:type width: int
|
|
|
|
|
|
|
|
"""
|
|
|
|
return Content("screenshot", caption=caption, css=css, height=height, image=image, width=width, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def slack(message, url=None, **kwargs):
|
|
|
|
"""Send a message to Slack.
|
|
|
|
|
|
|
|
:param message: The message to be displayed.
|
|
|
|
:type message: str
|
|
|
|
|
|
|
|
:param url: The channel URL.
|
|
|
|
:type url: str
|
|
|
|
|
|
|
|
"""
|
|
|
|
if url is None:
|
|
|
|
raise InvalidInput("Slack command requires a url parameter.")
|
|
|
|
|
|
|
|
statement = list()
|
|
|
|
statement.append("curl -X POST -H 'Content-type: application/json' --data")
|
|
|
|
statement.append('\'{"text": "%s"}\'' % message)
|
|
|
|
statement.append(url)
|
|
|
|
|
|
|
|
return Command(" ".join(statement), **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def twist(message, title="Notice", url=None, **kwargs):
|
|
|
|
"""Send a message to Twist.
|
|
|
|
|
|
|
|
:param message: The message to be displayed.
|
|
|
|
:type message: str
|
|
|
|
|
|
|
|
:param title: A title for the message.
|
|
|
|
:type title: str
|
|
|
|
|
|
|
|
:param url: The channel URL.
|
|
|
|
:type url: str
|
|
|
|
|
|
|
|
"""
|
|
|
|
if url is None:
|
|
|
|
raise InvalidInput("Twist command requires a url parameter.")
|
|
|
|
|
|
|
|
statement = list()
|
|
|
|
statement.append("curl -X POST -H 'Content-type: application/json' --data")
|
|
|
|
statement.append('\'{"content": "%s", "title": "%s"}\'' % (message, title))
|
|
|
|
statement.append(url)
|
|
|
|
|
|
|
|
return Command(" ".join(statement), **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
MESSAGE_MAPPINGS = {
|
|
|
|
'dialog': dialog,
|
|
|
|
'echo': echo,
|
|
|
|
'explain': explain,
|
|
|
|
'mattermost': mattermost,
|
|
|
|
'screenshot': screenshot,
|
|
|
|
'slack': slack,
|
|
|
|
'twist': twist,
|
|
|
|
}
|