#!/usr/bin/env python3
"""Renders a Jinja2 template using TinyPilot settings data.

To test:
  $ PYTHONPATH="${PWD}/app" ./scripts/render-template <<'EOF'
KEYBOARD_PATH = '{{ tinypilot_keyboard_interface }}'
MOUSE_ABSOLUTE_PATH = '{{ tinypilot_mouse_interface }}'
EOF
"""

# Ignore pylint complaint that this filename has a dash instead of an
# underscore.
# pylint:disable=invalid-name

import argparse
import os
import sys

import jinja2

import update.settings


def main(_):
    settings = update.settings.load()

    print(jinja2.Template(sys.stdin.read()).render(settings.as_dict()))


if __name__ == '__main__':
    # Ensure that the script doesn't have unnecessary privileges.
    # https://github.com/tiny-pilot/tinypilot-pro/issues/1190
    if os.geteuid() == 0:
        print("This script doesn't require root privileges.", file=sys.stderr)
        print('Please re-run as tinypilot:', file=sys.stderr)
        print('  runuser tinypilot --command',
              f"'{' '.join(sys.argv)}'",
              file=sys.stderr)
        sys.exit(1)

    parser = argparse.ArgumentParser(
        prog='TinyPilot Template Renderer',
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    main(parser.parse_args())
