mirror of
https://github.com/home-assistant/core.git
synced 2025-09-09 23:01:40 +02:00
Allow specifying multiple integrations (#150349)
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
"""Install requirements for a given integration."""
|
"""Install requirements for one or more integrations."""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -12,39 +12,49 @@ from .util import valid_integration
|
|||||||
def get_arguments() -> argparse.Namespace:
|
def get_arguments() -> argparse.Namespace:
|
||||||
"""Get parsed passed in arguments."""
|
"""Get parsed passed in arguments."""
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description="Install requirements for a given integration"
|
description="Install requirements for one or more integrations"
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
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()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
def main() -> int | None:
|
def main() -> int | None:
|
||||||
"""Install requirements for a given integration."""
|
"""Install requirements for the specified integrations."""
|
||||||
if not Path("requirements_all.txt").is_file():
|
if not Path("requirements_all.txt").is_file():
|
||||||
print("Run from project root")
|
print("Run from project root")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
args = get_arguments()
|
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 = [
|
if all_requirements:
|
||||||
"uv",
|
cmd = [
|
||||||
"pip",
|
"uv",
|
||||||
"install",
|
"pip",
|
||||||
"-c",
|
"install",
|
||||||
"homeassistant/package_constraints.txt",
|
"-c",
|
||||||
"-U",
|
"homeassistant/package_constraints.txt",
|
||||||
*requirements,
|
"-U",
|
||||||
]
|
*sorted(all_requirements), # Sort for consistent output
|
||||||
print(" ".join(cmd))
|
]
|
||||||
subprocess.run(
|
print(" ".join(cmd))
|
||||||
cmd,
|
subprocess.run(
|
||||||
check=True,
|
cmd,
|
||||||
)
|
check=True,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("No requirements to install.")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user