From a957ad607406f65f3e84d73ae53590910e259d60 Mon Sep 17 00:00:00 2001 From: GeoJulien Date: Mon, 28 Aug 2023 20:34:00 +0200 Subject: [PATCH] Check if tinify is available --- geotribu_cli/images/images_optimizer.py | 12 +++++++++++- geotribu_cli/images/optim_tinify.py | 7 ++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/geotribu_cli/images/images_optimizer.py b/geotribu_cli/images/images_optimizer.py index 77762d0..a7854ae 100644 --- a/geotribu_cli/images/images_optimizer.py +++ b/geotribu_cli/images/images_optimizer.py @@ -12,9 +12,10 @@ from pathlib import Path # package +from geotribu_cli.__about__ import __package_name__ from geotribu_cli.console import console from geotribu_cli.constants import GeotribuDefaults -from geotribu_cli.images.optim_tinify import optimize_with_tinify +from geotribu_cli.images.optim_tinify import TINIFY_INSTALLED, optimize_with_tinify from geotribu_cli.utils.check_path import check_path from geotribu_cli.utils.start_uri import open_uri from geotribu_cli.utils.str2bool import str2bool @@ -109,6 +110,15 @@ def run(args: argparse.Namespace): # check Tinify API KEY if args.tool_to_use == "tinypng": + if not TINIFY_INSTALLED: + logger.critical( + "Tinify n'est pas installé, le service ne peut donc pas être utilisé. " + "Pour l'utiliser, installer l'outil avec les dépendances " + f"supplémentaires : pip install {__package_name__}[img-remote] ou " + f"pip install {__package_name__}[all]" + ) + sys.exit(1) + if not getenv("TINIFY_API_KEY"): logger.critical( "La clé d'API de Tinify n'est pas configurée en variable " diff --git a/geotribu_cli/images/optim_tinify.py b/geotribu_cli/images/optim_tinify.py index 15ed695..ac3380c 100644 --- a/geotribu_cli/images/optim_tinify.py +++ b/geotribu_cli/images/optim_tinify.py @@ -13,7 +13,12 @@ from urllib.parse import unquote, urlsplit # 3rd party -import tinify +try: + import tinify + + TINIFY_INSTALLED = True +except ImportError: + TINIFY_INSTALLED = False # package from geotribu_cli.constants import GeotribuDefaults