#!/usr/bin/env python3
import os, sys, shutil
from remi import start
from threading import Timer
import typer
from . import api, remi_ui


cli = typer.Typer()

@cli.command()
def main(
		address           : str  = "localhost", # network interface ip
		port              : int  = 8001,        # http listen port
		api_base          : str  = "https://brzeczyszczykiewicz.pvv.ntnu.no/api", #Link to where your Grzegorz API is hosted

		host_name         : str  = None, # a string containing the host name or remote ip address that allows to access to your app.
		websocket_port    : int  = 0,    # websocket port, 0 makes it random

		# In order to limit the remote access to your interface you
		# can define a username and password. It probably uses http basic-auth
		username          : str  = None,
		password          : str  = None,

		# Open a PyWebView window instead of using the browser. This requires pywebview to be installed.
		# This will negate all other options
		standalone        : bool = False,

		start_browser     : bool = False, # Defines whether the browser should be opened automatically at startup
		multiple_instance : bool = False, # Multipe instance. If True, multiple clients that connects to your script has different App instances
		enable_file_cache : bool = True,  # Cache files in "res" folder

		# set to false to force the volume to be zero.
		# Great for remote development!
		volume            : bool = True,
		):

	if not volume:
		print("Keeping volume down")
		def keep_volume_down():
			api.set_volume(0)
			Timer(5, keep_volume_down).start()
		Timer(5, keep_volume_down).start()


	api.set_endpoint(api_base)

	# start the webserver:

	if standalone: # it's picky :(
		start(
			remi_ui.RemiApp,
			title = "Gregorz",
			standalone = standalone
		)
	else:
		start(
			remi_ui.RemiApp,
			title             = "Gregorz",
			address           = address,
			port              = port,
			host_name         = host_name,
			websocket_port    = websocket_port,
			username          = username,
			password          = password,
			standalone        = standalone,
			start_browser     = start_browser,
			multiple_instance = multiple_instance,
			enable_file_cache = enable_file_cache,

		)


if __name__ == "__main__":
	cli()
