mirror of https://github.com/mongodb/mongo
93 lines
3.1 KiB
Python
Executable File
93 lines
3.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Evergreen CLI configuration generator for DevContainers.
|
|
|
|
Generates evergreen_cli_config.env with URLs and SHA256 checksums for both ARM64 and AMD64.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import tempfile
|
|
from datetime import datetime
|
|
|
|
# Add script directory to path for importing local modules
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
from s3_artifact_utils import calculate_sha256, download_file
|
|
|
|
# Default Evergreen CLI version
|
|
DEFAULT_EVERGREEN_VERSION = "9e70579a0122864374d4449c6d195c0b00c9c458"
|
|
|
|
# S3 bucket and prefix
|
|
BUCKET = "evg-bucket-evergreen"
|
|
PREFIX = "evergreen/clients"
|
|
|
|
|
|
def fetch_evergreen_cli_info(arch: str, version: str) -> dict:
|
|
"""Fetch Evergreen CLI info for a specific architecture."""
|
|
print(f"\n🔍 Fetching {arch} Evergreen CLI...", file=sys.stderr)
|
|
|
|
arch_path = f"linux_{arch}"
|
|
url = f"https://{BUCKET}.s3.amazonaws.com/{PREFIX}/evergreen_{version}/{arch_path}/evergreen"
|
|
print(f"URL: {url}", file=sys.stderr)
|
|
|
|
# Download to temp location to calculate checksum
|
|
with tempfile.NamedTemporaryFile(delete=False, suffix=".bin") as tmp:
|
|
tmp_path = tmp.name
|
|
|
|
try:
|
|
download_file(url, tmp_path)
|
|
sha256 = calculate_sha256(tmp_path)
|
|
print(f"SHA256: {sha256}", file=sys.stderr)
|
|
finally:
|
|
os.unlink(tmp_path)
|
|
|
|
return {
|
|
"url": url,
|
|
"sha256": sha256,
|
|
"arch_path": arch_path,
|
|
"version": version,
|
|
}
|
|
|
|
|
|
def main():
|
|
"""Generate Evergreen CLI configuration file."""
|
|
version = DEFAULT_EVERGREEN_VERSION
|
|
print(f"Using version: {version}", file=sys.stderr)
|
|
|
|
# Fetch both architectures
|
|
arm64_info = fetch_evergreen_cli_info("arm64", version)
|
|
amd64_info = fetch_evergreen_cli_info("amd64", version)
|
|
|
|
# Determine output path
|
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
output_file = os.path.join(script_dir, "evergreen_cli_config.env")
|
|
|
|
# Write config file
|
|
with open(output_file, "w") as f:
|
|
f.write("# Generated by evergreen_cli.py\n")
|
|
f.write("# DO NOT EDIT MANUALLY - run: python3 evergreen_cli.py\n")
|
|
f.write("#\n")
|
|
f.write(f"# Generated: {datetime.now().isoformat()}\n")
|
|
f.write(f"# Version: {version}\n")
|
|
f.write("\n")
|
|
f.write("# ARM64 Evergreen CLI\n")
|
|
f.write(f'EVERGREEN_CLI_ARM64_URL="{arm64_info["url"]}"\n')
|
|
f.write(f'EVERGREEN_CLI_ARM64_SHA256="{arm64_info["sha256"]}"\n')
|
|
f.write(f'EVERGREEN_CLI_ARM64_ARCH="{arm64_info["arch_path"]}"\n')
|
|
f.write(f'EVERGREEN_CLI_ARM64_VERSION="{arm64_info["version"]}"\n')
|
|
f.write("\n")
|
|
f.write("# AMD64 Evergreen CLI\n")
|
|
f.write(f'EVERGREEN_CLI_AMD64_URL="{amd64_info["url"]}"\n')
|
|
f.write(f'EVERGREEN_CLI_AMD64_SHA256="{amd64_info["sha256"]}"\n')
|
|
f.write(f'EVERGREEN_CLI_AMD64_ARCH="{amd64_info["arch_path"]}"\n')
|
|
f.write(f'EVERGREEN_CLI_AMD64_VERSION="{amd64_info["version"]}"\n')
|
|
|
|
print(f"\n✅ Configuration written to: {output_file}", file=sys.stderr)
|
|
print("\nContents:", file=sys.stderr)
|
|
with open(output_file) as f:
|
|
print(f.read(), file=sys.stderr)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|