50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
"""Ensure required CLI tools are installed."""
|
|
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def ensure_aws():
|
|
if shutil.which("aws"):
|
|
subprocess.run(["aws", "--version"], check=True)
|
|
return
|
|
print("Installing awscli...")
|
|
subprocess.run(
|
|
[sys.executable, "-m", "pip", "install", "--quiet", "--break-system-packages", "awscli"],
|
|
check=False,
|
|
)
|
|
local_bin = os.path.expanduser("~/.local/bin")
|
|
os.environ["PATH"] = f"{local_bin}:{os.environ['PATH']}"
|
|
github_path = os.environ.get("GITHUB_PATH")
|
|
if github_path:
|
|
with open(github_path, "a") as f:
|
|
f.write(f"{local_bin}\n")
|
|
subprocess.run(["aws", "--version"], check=True)
|
|
|
|
|
|
def ensure_docker():
|
|
if shutil.which("docker"):
|
|
subprocess.run(["docker", "version", "--format", "{{.Client.Version}}"], check=True)
|
|
return
|
|
print("WARNING: docker CLI not found — docker builds will fail", file=sys.stderr)
|
|
|
|
|
|
def ensure_jinja2():
|
|
try:
|
|
import jinja2
|
|
except ImportError:
|
|
print("Installing jinja2 + pyyaml...")
|
|
subprocess.run(
|
|
[sys.executable, "-m", "pip", "install", "--quiet", "--break-system-packages", "jinja2", "pyyaml"],
|
|
check=True,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
ensure_jinja2()
|
|
ensure_aws()
|
|
ensure_docker()
|
|
print("Setup complete")
|