mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
(feat) updater installs from PyPi instead of GitHub releases
This commit is contained in:
parent
aefa828237
commit
16b7246412
@ -8,6 +8,7 @@ import platform
|
|||||||
import pkg_resources
|
import pkg_resources
|
||||||
import psutil
|
import psutil
|
||||||
import requests
|
import requests
|
||||||
|
from distutils.version import LooseVersion
|
||||||
from rich import box, print
|
from rich import box, print
|
||||||
from rich.console import Console, group
|
from rich.console import Console, group
|
||||||
from rich.panel import Panel
|
from rich.panel import Panel
|
||||||
@ -31,10 +32,6 @@ else:
|
|||||||
console = Console(style=Style(color="grey74", bgcolor="grey19"))
|
console = Console(style=Style(color="grey74", bgcolor="grey19"))
|
||||||
|
|
||||||
|
|
||||||
def get_versions() -> dict:
|
|
||||||
return requests.get(url=INVOKE_AI_REL).json()
|
|
||||||
|
|
||||||
|
|
||||||
def invokeai_is_running() -> bool:
|
def invokeai_is_running() -> bool:
|
||||||
for p in psutil.process_iter():
|
for p in psutil.process_iter():
|
||||||
try:
|
try:
|
||||||
@ -50,6 +47,21 @@ def invokeai_is_running() -> bool:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def get_pypi_versions():
|
||||||
|
url = f"https://pypi.org/pypi/invokeai/json"
|
||||||
|
try:
|
||||||
|
data = requests.get(url).json()
|
||||||
|
except:
|
||||||
|
raise Exception("Unable to fetch version information from PyPi")
|
||||||
|
|
||||||
|
versions = list(data["releases"].keys())
|
||||||
|
versions.sort(key=LooseVersion, reverse=True)
|
||||||
|
latest_version = [v for v in versions if 'rc' not in v][0]
|
||||||
|
latest_release_candidate = [v for v in versions if 'rc' in v][0]
|
||||||
|
return latest_version, latest_release_candidate
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def welcome(latest_release: str, latest_prerelease: str):
|
def welcome(latest_release: str, latest_prerelease: str):
|
||||||
@group()
|
@group()
|
||||||
def text():
|
def text():
|
||||||
@ -63,8 +75,7 @@ def welcome(latest_release: str, latest_prerelease: str):
|
|||||||
yield "[bold yellow]Options:"
|
yield "[bold yellow]Options:"
|
||||||
yield f"""[1] Update to the latest [bold]official release[/bold] ([italic]{latest_release}[/italic])
|
yield f"""[1] Update to the latest [bold]official release[/bold] ([italic]{latest_release}[/italic])
|
||||||
[2] Update to the latest [bold]pre-release[/bold] (may be buggy; caveat emptor!) ([italic]{latest_prerelease}[/italic])
|
[2] Update to the latest [bold]pre-release[/bold] (may be buggy; caveat emptor!) ([italic]{latest_prerelease}[/italic])
|
||||||
[3] Manually enter the [bold]tag name[/bold] for the version you wish to update to
|
[3] Manually enter the [bold]version[/bold] you wish to update to"""
|
||||||
[4] Manually enter the [bold]branch name[/bold] for the version you wish to update to"""
|
|
||||||
|
|
||||||
console.rule()
|
console.rule()
|
||||||
print(
|
print(
|
||||||
@ -91,45 +102,37 @@ def get_extras():
|
|||||||
return extras
|
return extras
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
versions = get_versions()
|
|
||||||
released_versions = [x for x in versions if not (x["draft"] or x["prerelease"])]
|
|
||||||
prerelease_versions = [x for x in versions if not x["draft"] and x["prerelease"]]
|
|
||||||
latest_release = released_versions[0]["tag_name"] if len(released_versions) else None
|
|
||||||
latest_prerelease = prerelease_versions[0]["tag_name"] if len(prerelease_versions) else None
|
|
||||||
|
|
||||||
if invokeai_is_running():
|
if invokeai_is_running():
|
||||||
print(":exclamation: [bold red]Please terminate all running instances of InvokeAI before updating.[/red bold]")
|
print(":exclamation: [bold red]Please terminate all running instances of InvokeAI before updating.[/red bold]")
|
||||||
input("Press any key to continue...")
|
input("Press any key to continue...")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
latest_release, latest_prerelease = get_pypi_versions()
|
||||||
|
|
||||||
welcome(latest_release, latest_prerelease)
|
welcome(latest_release, latest_prerelease)
|
||||||
|
|
||||||
tag = None
|
|
||||||
branch = None
|
release = latest_release
|
||||||
release = None
|
choice = Prompt.ask("Choice:", choices=["1", "2", "3"], default="1")
|
||||||
choice = Prompt.ask("Choice:", choices=["1", "2", "3", "4"], default="1")
|
|
||||||
|
|
||||||
if choice == "1":
|
if choice == "1":
|
||||||
release = latest_release
|
release = latest_release
|
||||||
elif choice == "2":
|
elif choice == "2":
|
||||||
release = latest_prerelease
|
release = latest_prerelease
|
||||||
elif choice == "3":
|
elif choice == "3":
|
||||||
while not tag:
|
release = Prompt.ask("Enter an InvokeAI version name")
|
||||||
tag = Prompt.ask("Enter an InvokeAI tag name")
|
|
||||||
elif choice == "4":
|
|
||||||
while not branch:
|
|
||||||
branch = Prompt.ask("Enter an InvokeAI branch name")
|
|
||||||
|
|
||||||
extras = get_extras()
|
extras = get_extras()
|
||||||
|
|
||||||
print(f":crossed_fingers: Upgrading to [yellow]{tag or release or branch}[/yellow]")
|
print(f":crossed_fingers: Upgrading to [yellow]{release}[/yellow]")
|
||||||
if release:
|
cmd = f'pip install "invokeai{extras}=={release}" --use-pep517 --upgrade'
|
||||||
cmd = f'pip install "invokeai{extras} @ {INVOKE_AI_SRC}/{release}.zip" --use-pep517 --upgrade'
|
|
||||||
elif tag:
|
|
||||||
cmd = f'pip install "invokeai{extras} @ {INVOKE_AI_TAG}/{tag}.zip" --use-pep517 --upgrade'
|
|
||||||
else:
|
|
||||||
cmd = f'pip install "invokeai{extras} @ {INVOKE_AI_BRANCH}/{branch}.zip" --use-pep517 --upgrade'
|
|
||||||
print("")
|
print("")
|
||||||
print("")
|
print("")
|
||||||
if os.system(cmd) == 0:
|
if os.system(cmd) == 0:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user