Allow specifying multiple integrations (#150349)

This commit is contained in:
Paulus Schoutsen
2025-08-11 13:12:29 +02:00
committed by GitHub
parent 73cbc962f9
commit 531073acc0

View File

@@ -1,4 +1,4 @@
"""Install requirements for a given integration."""
"""Install requirements for one or more integrations."""
import argparse
from pathlib import Path
@@ -12,39 +12,49 @@ from .util import valid_integration
def get_arguments() -> argparse.Namespace:
"""Get parsed passed in arguments."""
parser = argparse.ArgumentParser(
description="Install requirements for a given integration"
description="Install requirements for one or more integrations"
)
parser.add_argument(
"integration", type=valid_integration, help="Integration to target."
"integrations",
nargs="+",
type=valid_integration,
help="Integration(s) to target.",
)
return parser.parse_args()
def main() -> int | None:
"""Install requirements for a given integration."""
"""Install requirements for the specified integrations."""
if not Path("requirements_all.txt").is_file():
print("Run from project root")
return 1
args = get_arguments()
requirements = gather_recursive_requirements(args.integration)
# Gather requirements for all specified integrations
all_requirements = set()
for integration in args.integrations:
requirements = gather_recursive_requirements(integration)
all_requirements.update(requirements)
cmd = [
"uv",
"pip",
"install",
"-c",
"homeassistant/package_constraints.txt",
"-U",
*requirements,
]
print(" ".join(cmd))
subprocess.run(
cmd,
check=True,
)
if all_requirements:
cmd = [
"uv",
"pip",
"install",
"-c",
"homeassistant/package_constraints.txt",
"-U",
*sorted(all_requirements), # Sort for consistent output
]
print(" ".join(cmd))
subprocess.run(
cmd,
check=True,
)
else:
print("No requirements to install.")
return None