fix: Execute esptool scripts in interactive mode

The new version of esptool has a quite interactive output that supports
folding steps and overriding progress bar. Using interactive mode to run
esptool scripts will make the output propagate to the terminal immediately.
This commit is contained in:
Peter Dragun
2025-09-16 11:31:49 +02:00
parent 9eb07f92ba
commit 4c53f42dc7

View File

@@ -238,13 +238,13 @@ def action_extensions(base_actions: dict, project_path: str) -> dict:
'SERIAL_TOOL_EXTRA_PRE_CMD_ARGS': ';'.join(extra_pre), 'SERIAL_TOOL_EXTRA_PRE_CMD_ARGS': ';'.join(extra_pre),
'SERIAL_TOOL_EXTRA_ARGS': ';'.join(extra_post), 'SERIAL_TOOL_EXTRA_ARGS': ';'.join(extra_post),
} }
run_target(action, args, env, force_progression=True) run_target(action, args, env, force_progression=True, interactive=True)
def erase_flash(action: str, ctx: click.core.Context, args: PropertyDict) -> None: def erase_flash(action: str, ctx: click.core.Context, args: PropertyDict) -> None:
ensure_build_directory(args, ctx.info_name) ensure_build_directory(args, ctx.info_name)
esptool_args = _get_esptool_args(args) esptool_args = _get_esptool_args(args)
esptool_args += ['erase-flash'] esptool_args += ['erase-flash']
RunTool('esptool', esptool_args, args.build_dir, hints=not args.no_hints)() RunTool('esptool', esptool_args, args.build_dir, hints=not args.no_hints, interactive=True)()
def global_callback(ctx: click.core.Context, global_args: dict, tasks: PropertyDict) -> None: def global_callback(ctx: click.core.Context, global_args: dict, tasks: PropertyDict) -> None:
encryption = any([task.name in ('encrypted-flash', 'encrypted-app-flash') for task in tasks]) encryption = any([task.name in ('encrypted-flash', 'encrypted-app-flash') for task in tasks])
@@ -263,7 +263,7 @@ def action_extensions(base_actions: dict, project_path: str) -> dict:
""" """
args.port = args.port or get_default_serial_port() args.port = args.port or get_default_serial_port()
ensure_build_directory(args, ctx.info_name) ensure_build_directory(args, ctx.info_name)
run_target(target_name, args, {'ESPBAUD': str(args.baud), 'ESPPORT': args.port}) run_target(target_name, args, {'ESPBAUD': str(args.baud), 'ESPPORT': args.port}, interactive=True)
def merge_bin( def merge_bin(
action: str, action: str,