diff --git a/fastanime/cli/__init__.py b/fastanime/cli/__init__.py index 8a6e8a4..d47e1c2 100644 --- a/fastanime/cli/__init__.py +++ b/fastanime/cli/__init__.py @@ -1,5 +1,3 @@ -from sys import exit - import click from .. import __version__ @@ -16,11 +14,10 @@ commands = { "download": download, "anilist": anilist, "config": configure, - "exit": exit, } -@click.group(commands=commands, invoke_without_command=True) +@click.group(commands=commands) @click.version_option(__version__, "--version") @click.option( "-s", diff --git a/fastanime/cli/commands/anilist/__init__.py b/fastanime/cli/commands/anilist/__init__.py index d058a7d..28733ed 100644 --- a/fastanime/cli/commands/anilist/__init__.py +++ b/fastanime/cli/commands/anilist/__init__.py @@ -1,5 +1,3 @@ -from sys import exit - import click from ...interfaces.anilist_interfaces import anilist as anilist_interface @@ -20,7 +18,6 @@ commands = { "trending": trending, "scores": scores, "upcoming": upcoming, - "exit": exit, } diff --git a/fastanime/cli/commands/config.py b/fastanime/cli/commands/config.py index fe78f05..6a53ff7 100644 --- a/fastanime/cli/commands/config.py +++ b/fastanime/cli/commands/config.py @@ -1,8 +1,23 @@ +import os +import subprocess + import click +from rich import print + +from ... import USER_CONFIG_PATH +from ..utils.tools import exit_app -@click.command() +@click.command( + help="Opens up your fastanime config in your preferred editor", + short_help="Edit your config", +) def configure(): - pass + if EDITOR := os.environ.get("EDITOR"): + subprocess.run([EDITOR, USER_CONFIG_PATH]) + exit_app() + else: + print("$EDITOR environment variable missing :confused:") + print("Please Set the $EDITOR environment variable to enable editing of config") # create_desktop_shortcut() diff --git a/fastanime/cli/interfaces/anilist_interfaces.py b/fastanime/cli/interfaces/anilist_interfaces.py index 2ff71ae..245be97 100644 --- a/fastanime/cli/interfaces/anilist_interfaces.py +++ b/fastanime/cli/interfaces/anilist_interfaces.py @@ -7,7 +7,7 @@ import sys from rich import print from rich.prompt import Prompt -from ... import APP_CACHE_DIR, USER_CONFIG_PATH, USER_NAME +from ... import APP_CACHE_DIR, USER_CONFIG_PATH from ...libs.anilist.anilist import AniList from ...libs.anilist.anilist_data_schema import AnilistBaseMediaDataSchema from ...libs.anime_provider.allanime.api import anime_provider @@ -18,7 +18,7 @@ from ...Utility.data import anime_normalizer from ...Utility.utils import remove_html_tags, sanitize_filename from ..config import Config from ..utils.mpv import mpv -from ..utils.tools import QueryDict +from ..utils.tools import QueryDict, exit_app from ..utils.utils import clear SEARCH_RESULTS_CACHE = os.path.join(APP_CACHE_DIR, "search_results") @@ -101,11 +101,6 @@ def get_preview(search_results: list[AnilistBaseMediaDataSchema], config: Config return preview -def exit_app(*args): - print("Have a good day :smile:", USER_NAME) - sys.exit(0) - - def player_controls(config: Config, anilist_config: QueryDict): # user config translation_type: str = config.translation_type.lower() diff --git a/fastanime/cli/utils/tools.py b/fastanime/cli/utils/tools.py index 5516c99..3d37e71 100644 --- a/fastanime/cli/utils/tools.py +++ b/fastanime/cli/utils/tools.py @@ -1,6 +1,3 @@ -from rich.text import Text - - class QueryDict(dict): """dot.notation access to dictionary attributes""" @@ -16,12 +13,25 @@ class QueryDict(dict): self.__setitem__(attr, value) -def get_formatted_str(text: str, style): +def exit_app(*args): + import sys + + from rich import print + + from ... import USER_NAME + + print("Have a good day :smile:", USER_NAME) + sys.exit(0) + + +def get_formatted_str(string: str, style): + from rich.text import Text + # Create a Text object with desired style - text = Text("Hello, World!", style="bold red") + text = Text(string, style="bold red") # Convert the Text object to an ANSI string - ansi_output = text.__rich_console__(None, None) + ansi_output = text.__rich_console__(None, None) # pyright:ignore # Join the ANSI strings to form the final output "".join(segment.text for segment in ansi_output)