Skip to content
Snippets Groups Projects

Resolve "Provide precompiled binaries for easier install"

Merged Agate requested to merge 5-binaries into master
Compare and
7 files
+ 171
14
Compare changes
  • Side-by-side
  • Inline
Files
7
+ 40
11
@@ -7,6 +7,14 @@ import datetime
import dotenv
import functools
import keyring
# importing the backends explicitely is required for PyInstaller to work
import keyring.backends.kwallet
import keyring.backends.Windows
import keyring.backends.OS_X
import keyring.backends.SecretService
import keyring.backends.chainer
import logging
import math
import urllib.parse
@@ -16,11 +24,12 @@ import pathvalidate
import pathlib
import urllib.parse
import tqdm
from . import api
from . import config
from . import exceptions
from . import logs
from . import output
from funkwhale_cli import api
from funkwhale_cli import config
from funkwhale_cli import exceptions
from funkwhale_cli import logs
from funkwhale_cli import output
click_log.basic_config(logs.logger)
@@ -60,10 +69,18 @@ def async_command(f):
_async_reraise = kwargs.pop("_async_reraise", False)
try:
return loop.run_until_complete(f(*args, **kwargs))
except (exceptions.FunkwhaleError, aiohttp.client_exceptions.ClientError) as e:
except (aiohttp.client_exceptions.ClientError) as e:
if _async_reraise:
raise
message = str(e)
if hasattr(e, 'status') and e.status == 401:
message = "Remote answered with {}, ensure your are logged in first".format(e.status)
raise click.ClickException(message)
except (exceptions.FunkwhaleError) as e:
if _async_reraise:
raise
raise click.ClickException(str(e))
message = str(e)
raise click.ClickException(message)
else:
raise
@@ -118,14 +135,14 @@ class lazy_credential():
return bool(self.value)
def set_server(ctx, url, token):
def set_server(ctx, url, token, use_auth=True):
ctx.ensure_object(dict)
ctx.obj["SERVER_URL"] = url
parsed = urllib.parse.urlparse(url)
ctx.obj["SERVER_NETLOC"] = parsed.netloc
ctx.obj["SERVER_PROTOCOL"] = parsed.scheme
try:
token = token or lazy_credential(url, "_")
token = (token or lazy_credential(url, "_")) if use_auth else None
except ValueError as e:
raise click.ClickException("Error while retrieving password from keyring: {}. Your password may be incorrect.".format(e.args[0]))
except Exception as e:
@@ -154,14 +171,26 @@ def set_server(ctx, url, token):
default=False,
help="Disable logging",
)
@click.option(
"--no-login",
envvar="FUNKWHALE_NO_LOGIN",
is_flag=True,
default=False,
help="Disable authentication/keyring",
)
@SERVER_DECORATOR
@TOKEN_DECORATOR
@click_log.simple_verbosity_option(logs.logger, expose_value=True)
@click.pass_context
def cli(ctx, env_file, url, verbosity, token, quiet):
def cli(ctx, env_file, url, verbosity, token, quiet, no_login):
# small hack to fix some weird issues with pyinstaller and keyring
# there seems to be a cache issue somewhere
del keyring.backend.get_all_keyring.__wrapped__.always_returns
keyring.core.init_backend()
# /end of hack
ctx.ensure_object(dict)
logs.logger.disabled = quiet
set_server(ctx, url, token)
set_server(ctx, url, token, use_auth=not no_login)
@cli.command()
Loading