mirror of
https://git.pleroma.social/pleroma/relay.git
synced 2024-11-22 14:38:00 +00:00
various cli changes
* ensure database file is correctly named in docker container * add `--skip-questions` option to setup command * ask to proceed with setup if private key already exists
This commit is contained in:
parent
7064adb000
commit
71de40dfca
|
@ -1,11 +1,10 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import Crypto
|
||||
import aputils
|
||||
import asyncio
|
||||
import click
|
||||
import json
|
||||
import os
|
||||
import platform
|
||||
import typing
|
||||
|
||||
from pathlib import Path
|
||||
|
@ -40,14 +39,36 @@ def cli(ctx: click.Context, config: Path | None) -> None:
|
|||
if IS_DOCKER:
|
||||
config = Path("/data/relay.yaml")
|
||||
|
||||
# The database was named "relay.jsonld" even though it's an sqlite file. Fix it.
|
||||
db = Path('/data/relay.sqlite3')
|
||||
wrongdb = Path('/data/relay.jsonld')
|
||||
|
||||
if wrongdb.exists() and not db.exists():
|
||||
try:
|
||||
with wrongdb.open('rb') as fd:
|
||||
json.load(fd)
|
||||
|
||||
except json.JSONDecodeError:
|
||||
wrongdb.rename(db)
|
||||
|
||||
ctx.obj = Application(config)
|
||||
|
||||
|
||||
@cli.command('setup')
|
||||
@click.option('--skip-questions', '-s', is_flag = True, help = 'Just setup the database')
|
||||
@click.pass_context
|
||||
def cli_setup(ctx: click.Context) -> None:
|
||||
def cli_setup(ctx: click.Context, skip_questions: bool) -> None:
|
||||
'Generate a new config and create the database'
|
||||
|
||||
if ctx.obj.signer is not None:
|
||||
if not click.prompt('The database is already setup. Are you sure you want to continue?'):
|
||||
return
|
||||
|
||||
if skip_questions and ctx.obj.config.domain.endswith('example.com'):
|
||||
click.echo('You cannot skip the questions if the relay is not configured yet')
|
||||
return
|
||||
|
||||
if not skip_questions:
|
||||
while True:
|
||||
ctx.obj.config.domain = click.prompt(
|
||||
'What domain will the relay be hosted on?',
|
||||
|
@ -179,34 +200,15 @@ def cli_setup(ctx: click.Context) -> None:
|
|||
def cli_run(ctx: click.Context, dev: bool = False) -> None:
|
||||
'Run the relay'
|
||||
|
||||
if ctx.obj.config.domain.endswith('example.com') or not ctx.obj.signer:
|
||||
if ctx.obj.config.domain.endswith('example.com') or ctx.obj.signer is None:
|
||||
if not IS_DOCKER:
|
||||
click.echo(
|
||||
'Relay is not set up. Please edit your relay config or run "activityrelay setup".'
|
||||
)
|
||||
click.echo('Relay is not set up. Please run "activityrelay setup".')
|
||||
|
||||
return
|
||||
|
||||
cli_setup.callback() # type: ignore
|
||||
return
|
||||
|
||||
vers_split = platform.python_version().split('.')
|
||||
pip_command = 'pip3 uninstall pycrypto && pip3 install pycryptodome'
|
||||
|
||||
if Crypto.__version__ == '2.6.1':
|
||||
if int(vers_split[1]) > 7:
|
||||
click.echo(
|
||||
'Error: PyCrypto is broken on Python 3.8+. Please replace it with pycryptodome ' +
|
||||
'before running again. Exiting...'
|
||||
)
|
||||
|
||||
click.echo(pip_command)
|
||||
return
|
||||
|
||||
click.echo('Warning: PyCrypto is old and should be replaced with pycryptodome')
|
||||
click.echo(pip_command)
|
||||
return
|
||||
|
||||
ctx.obj['dev'] = dev
|
||||
ctx.obj.run()
|
||||
|
||||
|
|
Loading…
Reference in a new issue