mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-04-19 08:55:15 +00:00
61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
|
import uvicorn
|
||
|
from fasthtml.common import H1, FastHTML, Table, Td, Th, Thead, Titled, Tr
|
||
|
|
||
|
from akkudoktoreos.config.config import get_config
|
||
|
from akkudoktoreos.utils.logutil import get_logger
|
||
|
|
||
|
logger = get_logger(__name__)
|
||
|
|
||
|
config_eos = get_config()
|
||
|
|
||
|
|
||
|
configs = []
|
||
|
for field_name in config_eos.model_fields:
|
||
|
config = {}
|
||
|
config["name"] = field_name
|
||
|
config["value"] = getattr(config_eos, field_name)
|
||
|
config["default"] = config_eos.model_fields[field_name].default
|
||
|
config["description"] = config_eos.model_fields[field_name].description
|
||
|
configs.append(config)
|
||
|
|
||
|
|
||
|
app = FastHTML()
|
||
|
rt = app.route
|
||
|
|
||
|
|
||
|
def config_table() -> Table:
|
||
|
rows = [
|
||
|
Tr(
|
||
|
Td(config["name"]),
|
||
|
Td(config["value"]),
|
||
|
Td(config["default"]),
|
||
|
Td(config["description"]),
|
||
|
cls="even:bg-purple/5",
|
||
|
)
|
||
|
for config in configs
|
||
|
]
|
||
|
flds = "Name", "Value", "Default", "Description"
|
||
|
head = Thead(*map(Th, flds), cls="bg-purple/10")
|
||
|
return Table(head, *rows, cls="w-full")
|
||
|
|
||
|
|
||
|
@rt("/")
|
||
|
def get(): # type: ignore
|
||
|
return Titled("EOS Config App", H1("Configuration"), config_table())
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
try:
|
||
|
logger.info(
|
||
|
f"Starting {config_eos.server_fasthtml_host}:{config_eos.server_fasthtml_port}."
|
||
|
)
|
||
|
uvicorn.run(
|
||
|
app, host=str(config_eos.server_fasthtml_host), port=config_eos.server_fasthtml_port
|
||
|
)
|
||
|
except Exception as e:
|
||
|
# Error handling for binding issues
|
||
|
logger.error(
|
||
|
f"Could not bind to host {config_eos.server_fasthtml_host}:{config_eos.server_fasthtml_port}. Error: {e}"
|
||
|
)
|
||
|
exit(1)
|