Skip to content

Commit 531073a

Browse files
authored
Allow specifying multiple integrations (#150349)
1 parent 73cbc96 commit 531073a

File tree

1 file changed

+30
-20
lines changed

1 file changed

+30
-20
lines changed

script/install_integration_requirements.py

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""Install requirements for a given integration."""
1+
"""Install requirements for one or more integrations."""
22

33
import argparse
44
from pathlib import Path
@@ -12,39 +12,49 @@
1212
def get_arguments() -> argparse.Namespace:
1313
"""Get parsed passed in arguments."""
1414
parser = argparse.ArgumentParser(
15-
description="Install requirements for a given integration"
15+
description="Install requirements for one or more integrations"
1616
)
1717
parser.add_argument(
18-
"integration", type=valid_integration, help="Integration to target."
18+
"integrations",
19+
nargs="+",
20+
type=valid_integration,
21+
help="Integration(s) to target.",
1922
)
2023

2124
return parser.parse_args()
2225

2326

2427
def main() -> int | None:
25-
"""Install requirements for a given integration."""
28+
"""Install requirements for the specified integrations."""
2629
if not Path("requirements_all.txt").is_file():
2730
print("Run from project root")
2831
return 1
2932

3033
args = get_arguments()
3134

32-
requirements = gather_recursive_requirements(args.integration)
33-
34-
cmd = [
35-
"uv",
36-
"pip",
37-
"install",
38-
"-c",
39-
"homeassistant/package_constraints.txt",
40-
"-U",
41-
*requirements,
42-
]
43-
print(" ".join(cmd))
44-
subprocess.run(
45-
cmd,
46-
check=True,
47-
)
35+
# Gather requirements for all specified integrations
36+
all_requirements = set()
37+
for integration in args.integrations:
38+
requirements = gather_recursive_requirements(integration)
39+
all_requirements.update(requirements)
40+
41+
if all_requirements:
42+
cmd = [
43+
"uv",
44+
"pip",
45+
"install",
46+
"-c",
47+
"homeassistant/package_constraints.txt",
48+
"-U",
49+
*sorted(all_requirements), # Sort for consistent output
50+
]
51+
print(" ".join(cmd))
52+
subprocess.run(
53+
cmd,
54+
check=True,
55+
)
56+
else:
57+
print("No requirements to install.")
4858
return None
4959

5060

0 commit comments

Comments
 (0)