Add rm and edit commands
This commit is contained in:
parent
8f86a2e107
commit
c346053ebb
1 changed files with 32 additions and 2 deletions
34
mmcli.py
34
mmcli.py
|
@ -39,6 +39,11 @@ def http_to_ws(url):
|
||||||
return "ws" + url[4:]
|
return "ws" + url[4:]
|
||||||
|
|
||||||
|
|
||||||
|
def warn_if_tty(you_can_type="the message objects", write_message_to=sys.stderr):
|
||||||
|
if sys.stdin.isatty():
|
||||||
|
print(f"Reading from tty. (You can type {you_can_type} below. Or maybe you meant to redirect something to stdin.)", file=write_message_to)
|
||||||
|
|
||||||
|
|
||||||
def get_posts_for_channel(self, channel_id: str, progress=lambda x: None, after=None, since=None, **kwargs) -> Iterable[Dict]:
|
def get_posts_for_channel(self, channel_id: str, progress=lambda x: None, after=None, since=None, **kwargs) -> Iterable[Dict]:
|
||||||
"""
|
"""
|
||||||
@raises ApiException: Passed on from lower layers.
|
@raises ApiException: Passed on from lower layers.
|
||||||
|
@ -299,8 +304,7 @@ def send(mm_api: mattermost.MMApi, cmdline_args):
|
||||||
team, channel = resolve_team_channel(mm_api, cmdline_args.channel) if cmdline_args.channel is not None else (None, None)
|
team, channel = resolve_team_channel(mm_api, cmdline_args.channel) if cmdline_args.channel is not None else (None, None)
|
||||||
|
|
||||||
if read_stdin:
|
if read_stdin:
|
||||||
if sys.stdin.isatty():
|
warn_if_tty()
|
||||||
print("Reading from tty. (You can type the message objects below. Or maybe you meant to redirect something to stdin.)", file=sys.stderr)
|
|
||||||
|
|
||||||
for line in sys.stdin:
|
for line in sys.stdin:
|
||||||
msg = json.loads(line)
|
msg = json.loads(line)
|
||||||
|
@ -324,6 +328,20 @@ def send(mm_api: mattermost.MMApi, cmdline_args):
|
||||||
print(sent)
|
print(sent)
|
||||||
|
|
||||||
|
|
||||||
|
def rm(mm_api: mattermost.MMApi, cmdline_args):
|
||||||
|
mm_api.delete_post(cmdline_args.msgid)
|
||||||
|
|
||||||
|
|
||||||
|
def edit(mm_api: mattermost.MMApi, cmdline_args):
|
||||||
|
if cmdline_args.message is None:
|
||||||
|
warn_if_tty(you_can_type="the new message text")
|
||||||
|
new_text = sys.stdin.read()
|
||||||
|
else:
|
||||||
|
new_text = cmdline_args.message
|
||||||
|
|
||||||
|
mm_api.patch_post(cmdline_args.msgid, message=new_text)
|
||||||
|
|
||||||
|
|
||||||
def status(mm_api: mattermost.MMApi, cmdline_args):
|
def status(mm_api: mattermost.MMApi, cmdline_args):
|
||||||
if not cmdline_args.status:
|
if not cmdline_args.status:
|
||||||
raise ValueError("No status selected")
|
raise ValueError("No status selected")
|
||||||
|
@ -391,6 +409,8 @@ ACTIONS = {
|
||||||
"cat": {"function": cat},
|
"cat": {"function": cat},
|
||||||
"ls": {"function": ls},
|
"ls": {"function": ls},
|
||||||
"send": {"function": send},
|
"send": {"function": send},
|
||||||
|
"rm": {"function": rm},
|
||||||
|
"edit": {"function": edit},
|
||||||
"status": {"function": status},
|
"status": {"function": status},
|
||||||
"customstatus": {"function": customstatus},
|
"customstatus": {"function": customstatus},
|
||||||
}
|
}
|
||||||
|
@ -471,6 +491,16 @@ The input format accepted on stdin is one JSON object per line. The possible fie
|
||||||
parser_send.add_argument(
|
parser_send.add_argument(
|
||||||
"--attach", nargs="+", help="filename of file to attach")
|
"--attach", nargs="+", help="filename of file to attach")
|
||||||
|
|
||||||
|
parser_rm = subparsers.add_parser("rm", help="delete message(s)")
|
||||||
|
parser_rm.add_argument("msgid", help="ID of message to delete")
|
||||||
|
|
||||||
|
parser_edit = subparsers.add_parser(
|
||||||
|
"edit", help="edit message(s)",
|
||||||
|
epilog="The input accepted on stdin will be used as-is as the new text.")
|
||||||
|
parser_edit.add_argument("msgid", help="ID of message to edit")
|
||||||
|
parser_edit.add_argument(
|
||||||
|
"--message", help="message; if not provided, message will be expected on stdin")
|
||||||
|
|
||||||
parser_status = subparsers.add_parser("status", help="update user status")
|
parser_status = subparsers.add_parser("status", help="update user status")
|
||||||
parser_status.add_argument("--online", dest="status", action="store_const", const="online", help="Set status to online")
|
parser_status.add_argument("--online", dest="status", action="store_const", const="online", help="Set status to online")
|
||||||
parser_status.add_argument("--away", dest="status", action="store_const", const="away", help="Set status to away")
|
parser_status.add_argument("--away", dest="status", action="store_const", const="away", help="Set status to away")
|
||||||
|
|
Loading…
Reference in a new issue