fix: 🚑️ remove pipe mode from the install.py

I added a `path` argument to mimic what pipe did.
This commit is contained in:
melMass
2023-08-03 13:12:56 +02:00
parent 512de6023e
commit b854a302ce
+77 -95
View File
@@ -31,6 +31,16 @@ elif ".venv" in executable:
if mode is None:
mode = "unknown"
# - Constants
repo_url = "https://github.com/melmass/comfy_mtb.git"
repo_owner = "melmass"
repo_name = "comfy_mtb"
short_platform = {
"windows": "win_amd64",
"linux": "linux_x86_64",
}
current_platform = platform.system().lower()
# region ansi
# ANSI escape sequences for text styling
ANSI_FORMATS = {
@@ -142,7 +152,11 @@ def run_command(cmd):
shell_cmd = cmd
shell = True
elif isinstance(cmd, list):
shell_cmd = " ".join(cmd)
shell_cmd = ""
for arg in cmd:
if isinstance(arg, Path):
arg = arg.as_posix()
shell_cmd += f"{arg} "
shell = False
else:
raise ValueError(
@@ -377,6 +391,29 @@ def import_or_install(requirement, dry=False):
)
def get_github_assets(tag=None):
if tag:
tag_url = (
f"https://api.github.com/repos/{repo_owner}/{repo_name}/releases/tags/{tag}"
)
else:
tag_url = (
f"https://api.github.com/repos/{repo_owner}/{repo_name}/releases/latest"
)
response = requests.get(tag_url)
if response.status_code == 404:
# print_formatted(
# f"Tag version '{apply_color(version,'cyan')}' not found for {owner}/{repo} repository."
# )
print_formatted("Error retrieving the release assets.", color="red")
sys.exit()
tag_data = response.json()
tag_name = tag_data["name"]
return tag_data, tag_name
# Install dependencies from requirements.txt
def install_dependencies(dry=False):
parsed_requirements = get_requirements(here / "reqs.txt")
@@ -392,20 +429,6 @@ def install_dependencies(dry=False):
if __name__ == "__main__":
full = False
if is_pipe():
print_formatted("Pipe detected, full install...", color="green")
# we clone our repo
url = "https://github.com/melmass/comfy_mtb.git"
clone_dir = here / "custom_nodes" / "comfy_mtb"
if not clone_dir.exists():
clone_dir.parent.mkdir(parents=True, exist_ok=True)
print_formatted(f"Cloning {url} to {clone_dir}", "italic", color="yellow")
run_command(["git", "clone", "--recursive", url, clone_dir.as_posix()])
# os.chdir(clone_dir)
here = clone_dir
full = True
if len(sys.argv) == 1:
print_formatted(
"No arguments provided, doing a full install/update...",
@@ -416,7 +439,13 @@ if __name__ == "__main__":
full = True
# Parse command-line arguments
parser = argparse.ArgumentParser()
parser = argparse.ArgumentParser(description="Comfy_mtb install script")
parser.add_argument(
"--path",
"-p",
type=str,
help="Path to clone the repository to (i.e the absolute path to ComfyUI/custom_nodes)",
)
parser.add_argument(
"--wheels", "-w", action="store_true", help="Install wheel dependencies"
)
@@ -429,6 +458,7 @@ if __name__ == "__main__":
help="Print what will happen without doing it (still making requests to the GH Api)",
)
# - keep
# parser.add_argument(
# "--version",
# default=get_local_version(),
@@ -440,6 +470,28 @@ if __name__ == "__main__":
# wheels_directory = here / "wheels"
print_formatted(f"Detected environment: {apply_color(mode,'cyan')}")
if args.path:
clone_dir = Path(args.path)
if not clone_dir.exists():
print_formatted(
f"The path provided does not exist on disk... It must be pointing to ComfyUI's custom_nodes directory"
)
sys.exit()
else:
repo_dir = clone_dir / repo_name
if not repo_dir.exists():
print_formatted(f"Cloning to {repo_dir}...", "italic", color="yellow")
run_command(["git", "clone", "--recursive", repo_url, repo_dir])
else:
print_formatted(
f"Directory {repo_dir} already exists, we will update it..."
)
run_command(["git", "pull", "-C", repo_dir])
# os.chdir(clone_dir)
here = clone_dir
full = True
# Install dependencies from requirements.txt
# if args.requirements or mode == "venv":
@@ -477,29 +529,15 @@ if __name__ == "__main__":
if len(missing_deps) == 0:
print_formatted(
f"All requirements are already installed.", "italic", color="green"
f"All requirements are already installed. Enjoy 🚀", "italic", color="green"
)
sys.exit()
# Fetch the JSON data from the GitHub API URL
owner = "melmass"
repo = "comfy_mtb"
# - Get the tag version from the GitHub API
tag_data, tag_name = get_github_assets(tag=None)
# - keep
# version = args.version
current_platform = platform.system().lower()
# Get the tag version from the GitHub API
tag_url = f"https://api.github.com/repos/{owner}/{repo}/releases/latest"
response = requests.get(tag_url)
if response.status_code == 404:
# print_formatted(
# f"Tag version '{apply_color(version,'cyan')}' not found for {owner}/{repo} repository."
# )
print_formatted("Error retrieving the release assets.", color="red")
sys.exit()
tag_data = response.json()
tag_name = tag_data["name"]
# # Compare the local and tag versions
# if version and tag_name:
# if re.match(r"v?(\d+(\.\d+)+)", version) and re.match(
@@ -516,10 +554,6 @@ if __name__ == "__main__":
# )
# sys.exit()
short_platform = {
"windows": "win_amd64",
"linux": "linux_x86_64",
}
matching_assets = [
asset
for asset in tag_data["assets"]
@@ -560,72 +594,20 @@ if __name__ == "__main__":
missing_deps_urls = []
for whl_file in matching_assets:
# check if installed
whl_dep = whl_file["name"].split("-")[0]
missing_deps_urls.append(whl_file["browser_download_url"])
# run_command(
# [
# sys.executable,
# "-m",
# "pip",
# "install",
# whl_path.as_posix(),
# ]
# )
# # - Install the wheels
# for asset in matching_assets:
# asset_name = asset["name"]
# asset_download_url = asset["browser_download_url"]
# print_formatted(f"Downloading asset: {asset_name}", color="yellow")
# asset_dest = wheels_directory / asset_name
# download_file(asset_download_url, asset_dest)
# # - Unzip to wheels dir
# whl_files = []
# whl_order = None
# with zipfile.ZipFile(asset_dest, "r") as zip_ref:
# for item in tqdm(zip_ref.namelist(), desc="Extracting", unit="file"):
# if item.endswith(".whl"):
# item_basename = os.path.basename(item)
# target_path = wheels_directory / item_basename
# with zip_ref.open(item) as source, open(
# target_path, "wb"
# ) as target:
# whl_files.append(target_path)
# shutil.copyfileobj(source, target)
# elif item.endswith("order.txt"):
# item_basename = os.path.basename(item)
# target_path = wheels_directory / item_basename
# with zip_ref.open(item) as source, open(
# target_path, "wb"
# ) as target:
# whl_order = target_path
# shutil.copyfileobj(source, target)
# print_formatted(
# f"Wheels extracted for {current_platform} to the '{wheels_directory}' directory.",
# "bold",
# color="green",
# )
# print_formatted(
# "\tFound those missing wheels from the release:\n\t\t -"
# + "\n\t\t - ".join(missing_deps_urls),
# "italic",
# color="yellow",
# no_header=True,
# )
install_cmd = [sys.executable, "-m", "pip", "install"]
wheel_cmd = install_cmd + missing_deps_urls
# - Install all deps
if not args.dry:
# - first install the ordered wheel files
run_command(wheel_cmd)
run_command(install_cmd + ["-r", (here / "reqs.txt").as_posix()])
# - then install the rest of the deps
run_command(install_cmd + ["-r", (here / "reqs.txt")])
print_formatted(
"Successfully installed all dependencies.", "italic", color="green"
"✅ Successfully installed all dependencies.", "italic", color="green"
)
else:
print_formatted(