Files

51 lines
1.7 KiB
Python

import argparse
import json
import logging
import sys
from .app import DEFAULT_CONFIG, LOG, CameraControlBridge, load_config_or_env
def main(argv=None):
parser = argparse.ArgumentParser()
parser.add_argument("--config", default=DEFAULT_CONFIG)
parser.add_argument("--serve", action="store_true")
parser.add_argument("--list", action="store_true")
parser.add_argument("--check", action="store_true")
parser.add_argument("--publish-discovery", action="store_true")
parser.add_argument("--action", metavar="ID")
parser.add_argument("command", nargs="?")
parser.add_argument("--all-off", action="store_true")
args = parser.parse_args(argv)
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
bridge = CameraControlBridge(load_config_or_env(args.config))
if args.list:
bridge.list_actions()
return 0
if args.check:
return bridge.check()
if args.all_off:
print(json.dumps(bridge.all_off(), indent=2))
return 0
if args.action:
if not args.command:
print("missing command", file=sys.stderr)
return 2
print(json.dumps(bridge.execute_action(args.action, args.command, publish=False), indent=2))
return 0
if args.publish_discovery:
for credential in bridge.credentials:
try:
bridge.mqtt.connect(credential.get("username"), credential.get("password"))
bridge.publish_discovery()
bridge.mqtt.disconnect_cleanly()
return 0
except Exception as exc:
LOG.warning("publish discovery failed using %s: %s", credential["source"], exc)
return 1
bridge.serve()
return 0