feat(cli): add update app command

This commit is contained in:
Benex254
2024-08-11 21:57:11 +03:00
parent b1a2307c4d
commit 6939471e48
3 changed files with 43 additions and 11 deletions

View File

@@ -15,6 +15,7 @@ commands = {
"downloads": "downloads.downloads",
"cache": "cache.cache",
"completions": "completions.completions",
"update": "update.update",
}
@@ -42,7 +43,6 @@ signal.signal(signal.SIGINT, handle_exit)
@click.option("--log", help="Allow logging to stdout", is_flag=True)
@click.option("--log-file", help="Allow logging to a file", is_flag=True)
@click.option("--rich-traceback", help="Use rich to output tracebacks", is_flag=True)
@click.option("--update", help="Update fastanime to the latest version", is_flag=True)
@click.option(
"-p",
"--provider",
@@ -135,7 +135,6 @@ def run_cli(
log,
log_file,
rich_traceback,
update,
provider,
server,
format,
@@ -192,11 +191,6 @@ def run_cli(
from rich.traceback import install
install()
if update and None:
from .app_updater import update_app
update_app()
return
if provider:
ctx.obj.provider = provider

View File

@@ -62,7 +62,7 @@ def update_app():
is_latest, release_json = check_for_updates()
if is_latest:
print("[green]App is up to date[/]")
return
return False, release_json
tag_name = release_json["tag_name"]
print("[cyan]Updating app to version %s[/]" % tag_name)
@@ -76,7 +76,8 @@ def update_app():
print(f"Pulling latest changes from the repository via git: {shlex.join(args)}")
if not GIT_EXECUTABLE:
return print("[red]Cannot find git please install it.[/]")
print("[red]Cannot find git please install it.[/]")
return False, release_json
process = subprocess.run(
args,
@@ -99,6 +100,6 @@ def update_app():
]
process = subprocess.run(args)
if process.returncode == 0:
return True
return True, release_json
else:
return False
return False, release_json

View File

@@ -0,0 +1,37 @@
import click
@click.command(help="Helper command to update fastanime to latest")
@click.option("--check", "-c", help="Check for the latest release", is_flag=True)
def update(
check,
):
from rich.console import Console
from rich.markdown import Markdown
from ..app_updater import check_for_updates, update_app
def _print_release(release_data):
console = Console()
body = Markdown(release_data["body"])
tag = github_release_data["tag_name"]
tag_title = release_data["name"]
github_page_url = release_data["html_url"]
console.print(f"Release Page: {github_page_url}")
console.print(f"Tag: {tag}")
console.print(f"Title: {tag_title}")
console.print(body)
if check:
is_update, github_release_data = check_for_updates()
if is_update:
print(
"You are running an older version of fastanime please update to get the latest features"
)
_print_release(github_release_data)
else:
print("You are running the latest version of fastanime")
_print_release(github_release_data)
else:
success, github_release_data = update_app()
_print_release(github_release_data)