blakeblackshear.frigate/frigate/__main__.py

65 lines
2.3 KiB
Python
Raw Permalink Normal View History

import argparse
2021-02-17 14:23:32 +01:00
import faulthandler
import signal
import sys
import threading
from pydantic import ValidationError
2021-02-17 14:23:32 +01:00
from frigate.app import FrigateApp
from frigate.config import FrigateConfig
from frigate.log import setup_logging
2020-11-04 13:31:25 +01:00
def main() -> None:
faulthandler.enable()
2020-11-01 15:06:15 +01:00
# Setup the logging thread
setup_logging()
2020-11-04 04:26:39 +01:00
threading.current_thread().name = "frigate"
# Make sure we exit cleanly on SIGTERM.
signal.signal(signal.SIGTERM, lambda sig, frame: sys.exit())
# Parse the cli arguments.
parser = argparse.ArgumentParser(
prog="Frigate",
description="An NVR with realtime local object detection for IP cameras.",
)
parser.add_argument("--validate-config", action="store_true")
args = parser.parse_args()
# Load the configuration.
try:
config = FrigateConfig.load(install=True)
except ValidationError as e:
print("*************************************************************")
print("*************************************************************")
print("*** Your config file is not valid! ***")
print("*** Please check the docs at ***")
print("*** https://docs.frigate.video/configuration/ ***")
print("*************************************************************")
print("*************************************************************")
print("*** Config Validation Errors ***")
print("*************************************************************")
for error in e.errors():
location = ".".join(str(item) for item in error["loc"])
print(f"{location}: {error['msg']}")
print("*************************************************************")
print("*** End Config Validation Errors ***")
print("*************************************************************")
sys.exit(1)
if args.validate_config:
print("*************************************************************")
print("*** Your config file is valid. ***")
print("*************************************************************")
sys.exit(0)
# Run the main application.
FrigateApp(config).start()
2020-11-01 16:56:33 +01:00
if __name__ == "__main__":
main()