Commit 0c7c0153 authored by David Huss's avatar David Huss 💬
Browse files

Add json command

parent 416672c4
...@@ -141,6 +141,25 @@ def config(ctx, userconfig, watch, new, edit, path, print_): ...@@ -141,6 +141,25 @@ def config(ctx, userconfig, watch, new, edit, path, print_):
click.echo(ctx.get_help()) click.echo(ctx.get_help())
@main.command(context_settings=CONTEXT_SETTINGS)
@click.pass_context
@click.option('--watch', '-w', help="Run repeatedly with the given interval in seconds", type=click.IntRange(2, 2147483647, clamp=True))
@click.option('--compact/--pretty', '-c/-p', default=False, show_default=True, help="Print pretty and indented json or compact")
@click.option('--userconfig', '-u', is_flag=True, help="Use user config even if on server")
@click.option('--endpoint', '-e', multiple=True, help="Filter by one or more endpoints as named in the user configuration (e.g. [servername]). Order is respected.")
def json(ctx, userconfig, watch, endpoint, compact):
"""Print json"""
config = init_config(userconfig)
config.filter_endpoints(endpoint)
if not config.endpoints:
exit()
if watch is not None:
while watch is not None:
print(format_json(config, watch, compact))
time.sleep(watch)
else:
print(format_json(config, watch, compact))
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
import time import time
import subprocess import subprocess
import hashlib import hashlib
import json
from datetime import datetime, timedelta from datetime import datetime, timedelta
import requests import requests
from xml.etree import cElementTree as ElementTree from xml.etree import cElementTree as ElementTree
...@@ -269,3 +270,18 @@ def meetings_twolines(config: Config, watch: int, fancy: bool): ...@@ -269,3 +270,18 @@ def meetings_twolines(config: Config, watch: int, fancy: bool):
lines = ["{:^60}".format(l[:61]) for l in lines] lines = ["{:^60}".format(l[:61]) for l in lines]
lines = "\n".join(lines) lines = "\n".join(lines)
print(lines) print(lines)
def format_json(config: Config, watch: bool, compact: bool) -> str:
meetings = [get_meetings(e.secret, e.url, config.path) for e in config.endpoints]
# Clear screen after request is done, and before printing new data to keep
# blinking to a minimum
if watch is not None:
click.clear()
if compact:
return str(json.dumps(meetings))
else:
return str(json.dumps(meetings, indent=4))
...@@ -7,6 +7,7 @@ from typing import NewType, Optional, Tuple, Iterable, List ...@@ -7,6 +7,7 @@ from typing import NewType, Optional, Tuple, Iterable, List
from bbbmon.xmldict import XmlListConfig, XmlDictConfig from bbbmon.xmldict import XmlListConfig, XmlDictConfig
import bbbmon.meetings import bbbmon.meetings
from bbbmon.configuration import Config
......
[tool.poetry] [tool.poetry]
name = "bbbmon" name = "bbbmon"
version = "0.1.22" version = "0.1.23"
description = "A small CLI utility to monitor bbb usage" description = "A small CLI utility to monitor bbb usage"
authors = ["David Huss <david.huss@hfbk-hamburg.de>"] authors = ["David Huss <david.huss@hfbk-hamburg.de>"]
maintainers = ["David Huss <david.huss@hfbk-hamburg.de>"] maintainers = ["David Huss <david.huss@hfbk-hamburg.de>"]
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment