55 行
1.3 KiB
Python
55 行
1.3 KiB
Python
# SPDX-FileCopyrightText: 2022 n9k <https://git.076.ne.jp/ninya9k>
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import argparse
|
|
import os
|
|
|
|
import toml
|
|
import uvicorn
|
|
|
|
from anonstream import create_app
|
|
|
|
DEFAULT_PORT = 5051
|
|
DEFAULT_CONFIG = 'config.toml'
|
|
|
|
def want_rel(path):
|
|
'''
|
|
Prepend './' to relative paths.
|
|
>>> want_rel('/some/abs/path')
|
|
'/some/abs/path'
|
|
>>> want_rel('config.toml')
|
|
'./config.toml'
|
|
'''
|
|
if os.path.isabs(path):
|
|
return path
|
|
else:
|
|
return os.path.join('.', path)
|
|
|
|
formatter = lambda prog: argparse.HelpFormatter(prog, max_help_position=26)
|
|
parser = argparse.ArgumentParser(
|
|
'python -m anonstream',
|
|
description='Start the anonstream webserver locally.',
|
|
formatter_class=formatter,
|
|
)
|
|
parser.add_argument(
|
|
'--config', '-c',
|
|
metavar='FILE',
|
|
default=os.environ.get('ANONSTREAM_CONFIG', DEFAULT_CONFIG),
|
|
help=(
|
|
'location of config.toml '
|
|
f'(default: $ANONSTREAM_CONFIG or {want_rel(DEFAULT_CONFIG)})'
|
|
),
|
|
)
|
|
parser.add_argument(
|
|
'--port', '-p',
|
|
type=int,
|
|
default=DEFAULT_PORT,
|
|
help=f'bind webserver to this port (default: {DEFAULT_PORT})',
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
with open(args.config) as fp:
|
|
config = toml.load(fp)
|
|
app = create_app(config)
|
|
uvicorn.run(app, port=args.port, server_header=False)
|