Source code for esptest.scripts.downbin

import argparse
import logging
import os
import re
import sys

from esptest.devices.serial_tools import get_all_serial_ports
from esptest.tools.download_bin import bin_path_to_dir, download_bin_to_ports


[docs] def main() -> None: usage_string = '%(prog)s [bin_path] [options]' parser = argparse.ArgumentParser(description='Download bin', usage=usage_string) parser.add_argument('bin_path', type=str, nargs='?', help='esp bin path, default ./build') parser.add_argument('-p', '--ports', type=str, nargs='*', help='download port list') parser.add_argument('-b', '--baudrate', type=int, default=0, help='download baudrate') parser.add_argument( '--range', type=str, help='port list from range (linux), eg: "0-10" equals to "-p ttyUSB0 ttyUSB1 ... ttyUSB10"' ) parser.add_argument( '--all', action='store_true', help='download to all serial ports, ignored if "-p/--ports" is specified.' ) parser.add_argument('--no-erase-nvs', dest='erase_nvs', action='store_false', help='skip erase nvs') parser.add_argument('--max-workers', type=int, default=0, help='max download threads') parser.add_argument('--force-no-stub', action='store_true', help='force no stub') parser.add_argument('--check-no-stub', action='store_true', help='check no stub') parser.add_argument('-v', '--verbose', action='count', default=0, help='verbose output') args = parser.parse_args() log_level = [logging.WARNING, logging.INFO, logging.DEBUG] logging.basicConfig( level=log_level[min(args.verbose, len(log_level) - 1)], format='%(asctime)s %(levelname)s %(module)s :: %(message)s', ) bin_path = args.bin_path or './build' if not os.path.isdir(bin_path): try: bin_path = bin_path_to_dir(bin_path) except Exception as e: # pylint: disable=broad-except logging.exception(f'Invalid bin path {bin_path} : {str(e)}') sys.exit(1) ports = [] if args.ports: ports = args.ports elif args.range: match = re.match(r'(\d+)-(\d+)', args.range) assert match start, end = map(int, match.groups()) ports = [f'ttyUSB{i}' for i in range(start, end + 1)] elif args.all: ports = [p.device for p in get_all_serial_ports()] else: ports = [os.getenv('ESPPORT') or '/dev/ttyUSB0'] assert isinstance(ports, list) try: download_bin_to_ports( bin_path, ports, args.erase_nvs, max_workers=args.max_workers, force_no_stub=args.force_no_stub, check_no_stub=args.check_no_stub, baud=args.baudrate, ) except RuntimeError as e: logging.error(str(e)) sys.exit(1)
if __name__ == '__main__': logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s') main()