diff --git a/fastanime/cli/commands/config.py b/fastanime/cli/commands/config.py index b17385c..5c5d450 100644 --- a/fastanime/cli/commands/config.py +++ b/fastanime/cli/commands/config.py @@ -22,34 +22,71 @@ if TYPE_CHECKING: ) @click.pass_obj def config(config: "Config", path, view, desktop_entry): - from pyshortcuts import make_shortcut + import sys + from rich import print - from ...constants import APP_NAME, ICON_PATH, USER_CONFIG_PATH + from ... import __version__ + from ...constants import APP_NAME, ICON_PATH, S_PLATFORM, USER_CONFIG_PATH if path: print(USER_CONFIG_PATH) elif view: print(config) elif desktop_entry: + import os import shutil + from pathlib import Path + from textwrap import dedent + + from rich import print + from rich.prompt import Confirm + + from ..utils.tools import exit_app FASTANIME_EXECUTABLE = shutil.which("fastanime") if FASTANIME_EXECUTABLE: cmds = f"{FASTANIME_EXECUTABLE} --rofi anilist" else: - cmds = "_ -m fastanime --rofi anilist" - shortcut = make_shortcut( - name=APP_NAME, - description="Watch Anime from the terminal", - icon=ICON_PATH, - script=cmds, - terminal=False, - ) - if shortcut: - print("Success", shortcut) + cmds = f"{sys.executable} -m fastanime --rofi anilist" + + # TODO: Get funs of the other platforms to complete this lol + if S_PLATFORM == "win32": + print( + "Not implemented; the author thinks its not straight forward so welcomes lovers of windows to try and implement it themselves or to switch to a proper os like arch linux or pray the author gets bored 😜" + ) + elif S_PLATFORM == "darwin": + print( + "Not implemented; the author thinks its not straight forward so welcomes lovers of mac to try and implement it themselves or to switch to a proper os like arch linux or pray the author gets bored 😜" + ) else: - print("Failed") + desktop_entry = dedent( + f""" + [Desktop Entry] + Name={APP_NAME} + Type=Application + version={__version__} + Path={Path().home()} + Comment=Watch anime from your terminal + Terminal=false + Icon={ICON_PATH} + Exec={cmds} + Categories=Entertainment + """ + ) + base = os.path.expanduser("~/.local/share/applications") + desktop_entry_path = os.path.join(base, f"{APP_NAME}.desktop") + if os.path.exists(desktop_entry_path): + if not Confirm.ask( + f"The file already exists {desktop_entry_path}; or would you like to rewrite it", + default=False, + ): + exit_app(1) + with open(desktop_entry_path, "w") as f: + f.write(desktop_entry) + with open(desktop_entry_path) as f: + print(f"Successfully wrote \n{f.read()}") + exit_app(0) else: import click diff --git a/fastanime/cli/utils/tools.py b/fastanime/cli/utils/tools.py index d86ae4f..fa5c65d 100644 --- a/fastanime/cli/utils/tools.py +++ b/fastanime/cli/utils/tools.py @@ -14,7 +14,7 @@ class FastAnimeRuntimeState(dict): self.__setitem__(attr, value) -def exit_app(*args): +def exit_app(exit_code=0, *args): import os import shutil import sys @@ -46,4 +46,4 @@ def exit_app(*args): from rich import print print("Have a good day :smile:", USER_NAME) - sys.exit(0) + sys.exit(exit_code) diff --git a/poetry.lock b/poetry.lock index 3841106..fc97250 100644 --- a/poetry.lock +++ b/poetry.lock @@ -861,20 +861,6 @@ nodeenv = ">=1.6.0" all = ["twine (>=3.4.1)"] dev = ["twine (>=3.4.1)"] -[[package]] -name = "pyshortcuts" -version = "1.9.0" -description = "Create desktop and Start Menu shortcuts for python scripts" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyshortcuts-1.9.0-py3-none-any.whl", hash = "sha256:54d12ed8cd29bf83ac15153ce882a77072f2032b5f979474c519a2bac5af849d"}, - {file = "pyshortcuts-1.9.0.tar.gz", hash = "sha256:016e89111337f74ce1ba3f4b79b295a643bc70b3e63ce4600247aa4bafa06877"}, -] - -[package.dependencies] -pywin32 = {version = "*", markers = "platform_system == \"Windows\""} - [[package]] name = "pytest" version = "8.3.2" @@ -897,43 +883,6 @@ tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] -[[package]] -name = "python-dotenv" -version = "1.0.1" -description = "Read key-value pairs from a .env file and set them as environment variables" -optional = false -python-versions = ">=3.8" -files = [ - {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, - {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, -] - -[package.extras] -cli = ["click (>=5.0)"] - -[[package]] -name = "pywin32" -version = "306" -description = "Python for Window Extensions" -optional = false -python-versions = "*" -files = [ - {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, - {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, - {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, - {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, - {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, - {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, - {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, - {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, - {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, - {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, - {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, - {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, -] - [[package]] name = "pyyaml" version = "6.0.2" @@ -1407,4 +1356,4 @@ test = ["pytest (>=8.1,<9.0)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "7e083892b0414cd8248240f21e5672e424054fc1ddbf5d20acf65388a652ec79" +content-hash = "7d20e2d0c0c3c8f3a48d9160a2b4a11a5f353d23bb5d7a06ec527fe08e425b91" diff --git a/pyproject.toml b/pyproject.toml index 95b8ad3..786db26 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,11 +12,9 @@ yt-dlp = "^2024.5.27" rich = "^13.7.1" click = "^8.1.7" inquirerpy = "^0.3.4" -python-dotenv = "^1.0.1" thefuzz = "^0.22.1" requests = "^2.32.3" plyer = "^2.1.0" -pyshortcuts = "^1.9.0" mpv = "^1.0.7" [tool.poetry.group.dev.dependencies]