Files
DD3-LoRa-Bridge-MultiSender/tools/hil/flash_pair.py
T

34 lines
1.3 KiB
Python

#!/usr/bin/env python3
import argparse
from pathlib import Path
from hil_common import HilError, load_config, main_guard, new_artifact_dir, pair_ports, pio_command, run_checked
def flash_pair(artifact: Path, yes_flash: bool) -> None:
if not yes_flash:
raise HilError("refusing to flash without --yes-flash")
config = load_config()
ports = pair_ports(config, "flash")
environment = config.get("hil", {}).get("environment", "hil")
artifact.mkdir(parents=True, exist_ok=True)
run_checked([pio_command(), "run", "-e", environment], log=artifact / "build.log")
for port in ports:
run_checked([pio_command(), "run", "-e", environment, "-t", "upload", "--upload-port", str(port.device)],
log=artifact / f"flash-{port.name}.log")
def main() -> int:
parser = argparse.ArgumentParser(description="Build once and flash the explicitly approved board pair")
parser.add_argument("--yes-flash", action="store_true", help="confirm the approved_flash entries for this invocation")
parser.add_argument("--artifact-dir")
args = parser.parse_args()
artifact = Path(args.artifact_dir) if args.artifact_dir else new_artifact_dir("flash")
flash_pair(artifact, args.yes_flash)
print(f"Flash logs: {artifact}")
return 0
if __name__ == "__main__":
main_guard(main)