Poetry: uvicorn with .env and command line arguments (#836)

* fixed poetry logs

* make isort happy

* Poetry: uvicorn .env and command line arguments

* restore commands.py

* format

* own it

Co-authored-by: dni <dni.khr@gmail.com>
This commit is contained in:
calle
2022-08-03 13:16:50 +02:00
committed by GitHub
co-authored by dni
parent 91fefdb83d
commit 2edaa0ee03
2 changed files with 41 additions and 19 deletions
+36 -9
View File
@@ -1,18 +1,45 @@
import time
import click
import uvicorn
from lnbits.settings import HOST, PORT
@click.command()
@click.option("--port", default="5000", help="Port to run LNBits on")
@click.option("--host", default="127.0.0.1", help="Host to run LNBits on")
def main(port, host):
@click.command(
context_settings=dict(
ignore_unknown_options=True,
allow_extra_args=True,
)
)
@click.option("--port", default=PORT, help="Port to listen on")
@click.option("--host", default=HOST, help="Host to run LNBits on")
@click.option("--ssl-keyfile", default=None, help="Path to SSL keyfile")
@click.option("--ssl-certfile", default=None, help="Path to SSL certificate")
@click.pass_context
def main(ctx, port: int, host: str, ssl_keyfile: str, ssl_certfile: str):
"""Launched with `poetry run lnbits` at root level"""
uvicorn.run("lnbits.__main__:app", port=port, host=host)
# this beautiful beast parses all command line arguments and passes them to the uvicorn server
d = dict(
[
(
item[0].strip("--").replace("-", "_"),
int(item[1]) if item[1].isdigit() else item[1],
)
for item in zip(*[iter(ctx.args)] * 2)
]
)
config = uvicorn.Config(
"lnbits.__main__:app",
port=port,
host=host,
ssl_keyfile=ssl_keyfile,
ssl_certfile=ssl_certfile,
**d
)
server = uvicorn.Server(config)
server.run()
if __name__ == "__main__":
main()
# def main():
# """Launched with `poetry run start` at root level"""
# uvicorn.run("lnbits.__main__:app")