From ee6a4956e076e0fc86333b2b89ccbc0d3b255890 Mon Sep 17 00:00:00 2001 From: beroux <42benoit.roux@gmail.com> Date: Sun, 29 Sep 2024 16:35:08 +0200 Subject: [PATCH] fix(project): fix bad ide name crash Fix crash when ide name is not found --- src/fttb/cmds/download.py | 9 +++++++-- src/fttb/cmds/infos.py | 9 +++++++-- src/fttb/cmds/list.py | 8 ++++++-- src/fttb/cmds/remove.py | 16 ++++++++++++---- src/fttb/cmds/use.py | 9 +++++++-- src/fttb/utils.py | 6 +++++- 6 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/fttb/cmds/download.py b/src/fttb/cmds/download.py index a3c0809..f0524a6 100644 --- a/src/fttb/cmds/download.py +++ b/src/fttb/cmds/download.py @@ -6,7 +6,7 @@ import requests -from ..utils import get_code, parse_version, download_file, VersionError +from ..utils import get_code, parse_version, download_file, VersionError, IdeNotFoundError def set_download_parser(parser: ArgumentParser): @@ -49,7 +49,12 @@ def download_cmd(args, config_fttb): if args.ide == "all": print("invalid IDE code") return - ide_code = get_code(args.ide, config_fttb) + try: + ide_code = get_code(args.ide, config_fttb) + except IdeNotFoundError: + print(f"{args.ide} not found") + return + try: version = parse_version(ide_code, args.version, args.type) except VersionError: diff --git a/src/fttb/cmds/infos.py b/src/fttb/cmds/infos.py index 9a2250f..3f75783 100644 --- a/src/fttb/cmds/infos.py +++ b/src/fttb/cmds/infos.py @@ -3,7 +3,7 @@ import requests -from ..utils import get_code +from ..utils import get_code, IdeNotFoundError def set_infos_parser(parser: ArgumentParser): @@ -11,7 +11,12 @@ def set_infos_parser(parser: ArgumentParser): def infos_cmd(args, config_fttb): - ide = get_code(args.ide, config_fttb) + try: + ide = get_code(args.ide, config_fttb) + except IdeNotFoundError: + print(f"{args.ide} not found") + return + res = requests.get( f"https://data.services.jetbrains.com/products?" f"fields=name,intellijProductCode,description,categories&" diff --git a/src/fttb/cmds/list.py b/src/fttb/cmds/list.py index fef1851..11f67a3 100644 --- a/src/fttb/cmds/list.py +++ b/src/fttb/cmds/list.py @@ -5,7 +5,7 @@ import requests -from ..utils import get_code +from ..utils import get_code, IdeNotFoundError def set_list_parser(parser: ArgumentParser): @@ -32,7 +32,11 @@ def list_cmd(args, config_fttb): if "IDE" in ide['categories']: print(f"{ide['name']}\n{ide['description']}\n") else: - ide_code = get_code(args.ide, config_fttb) + try: + ide_code = get_code(args.ide, config_fttb) + except IdeNotFoundError: + print(f"{args.ide} not found") + return res = requests.get( f"https://data.services.jetbrains.com/products?code={ide_code}&fields=releases") if not res.ok: diff --git a/src/fttb/cmds/remove.py b/src/fttb/cmds/remove.py index e5484da..1d65f83 100644 --- a/src/fttb/cmds/remove.py +++ b/src/fttb/cmds/remove.py @@ -6,7 +6,7 @@ import requests -from ..utils import get_code, parse_version +from ..utils import get_code, parse_version, IdeNotFoundError def set_remove_parser(parser: ArgumentParser): @@ -16,7 +16,11 @@ def set_remove_parser(parser: ArgumentParser): def remove_all_versions(args, config_fttb): - ide_code = get_code(args.ide, config_fttb) + try: + ide_code = get_code(args.ide, config_fttb) + except IdeNotFoundError: + print(f"{args.ide} not found") + return for f in glob.glob(f"{config_fttb['install_path']}/{ide_code}-*"): shutil.rmtree(f) @@ -27,8 +31,12 @@ def remove_cmd(args, config_fttb): return if args.version == "all": return remove_all_versions(args, config_fttb) - ide_code = get_code(args.ide, config_fttb) - + try: + ide_code = get_code(args.ide, config_fttb) + except IdeNotFoundError: + print(f"{args.ide} not found") + return + res = requests.get( f"https://data.services.jetbrains.com/products?code={ide_code}&fields=releases") if not res.ok: diff --git a/src/fttb/cmds/use.py b/src/fttb/cmds/use.py index fca84e1..9431cb1 100644 --- a/src/fttb/cmds/use.py +++ b/src/fttb/cmds/use.py @@ -4,7 +4,7 @@ import requests from ..cmds.download import download_ide -from ..utils import get_code, parse_version, VersionError +from ..utils import get_code, parse_version, VersionError, IdeNotFoundError def set_use_parser(parser: ArgumentParser): @@ -67,7 +67,12 @@ def generate_entry(ide, ide_code, version, config_fttb): def use_cmd(args, config_fttb): - ide_code = get_code(args.ide, config_fttb) + try: + ide_code = get_code(args.ide, config_fttb) + except IdeNotFoundError: + print(f"{args.ide} not found") + return + try: version = parse_version(ide_code, args.version, args.type) except VersionError: diff --git a/src/fttb/utils.py b/src/fttb/utils.py index 4e72747..50946ab 100644 --- a/src/fttb/utils.py +++ b/src/fttb/utils.py @@ -9,6 +9,10 @@ class VersionError(Exception): pass +class IdeNotFoundError(Exception): + pass + + def get_versions_list() -> list[str]: with open("/tmp/ft_tb/versions.list", "r") as list_file: return list_file.read().splitlines() @@ -75,7 +79,7 @@ def get_code(name, config_fttp: dict): return name if name in config_fttp['aliases'].keys(): return config_fttp['aliases'][name] - return name + raise IdeNotFoundError def download_file(url, dst):