Skip to content

Commit

Permalink
Merge branch 'fix/flash_progression_processing' into 'master'
Browse files Browse the repository at this point in the history
tools: process progression for flash action output

See merge request espressif/esp-idf!23911
  • Loading branch information
dobairoland committed Jun 13, 2023
2 parents 5a9bfc1 + 07c7fe9 commit 0de9dab
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
2 changes: 1 addition & 1 deletion tools/idf_py_actions/serial_ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ def flash(action: str, ctx: click.core.Context, args: PropertyDict, force: bool,
if extra_args:
extra += shlex.split(extra_args)
env = {'ESPBAUD': str(args.baud), 'ESPPORT': args.port, 'SERIAL_TOOL_EXTRA_ARGS': ';'.join(extra)}
run_target(action, args, env)
run_target(action, args, env, force_progression=True)

def erase_flash(action: str, ctx: click.core.Context, args: PropertyDict) -> None:
ensure_build_directory(args, ctx.info_name)
Expand Down
15 changes: 13 additions & 2 deletions tools/idf_py_actions/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,12 @@ def print_progression(output: str) -> None:
print('\r' + fit_text_in_terminal(output.strip('\n\r')) + '\x1b[K', end='', file=output_stream)
output_stream.flush()

def is_progression(output: str) -> bool:
# try to find possible progression by a pattern match
if re.match(r'^\[\d+/\d+\]|.*\(\d+ \%\)$', output):
return True
return False

async def read_stream() -> Optional[str]:
try:
output_b = await input_stream.readline()
Expand Down Expand Up @@ -324,6 +330,8 @@ async def read_interactive_stream() -> Optional[str]:
# used in interactive mode to print hints after matched line
hints = load_hints()
last_line = ''
is_progression_last_line = False
is_progression_processing_enabled = self.force_progression and output_stream.isatty() and '-v' not in self.args

try:
with open(output_filename, 'w', encoding='utf8') as output_file:
Expand All @@ -344,10 +352,13 @@ async def read_interactive_stream() -> Optional[str]:
if not output_stream.isatty():
output = output_noescape

if self.force_progression and output[0] == '[' and '-v' not in self.args and output_stream.isatty():
# print output in progression way but only the progression related (that started with '[') and if verbose flag is not set
if is_progression_processing_enabled and is_progression(output):
print_progression(output)
is_progression_last_line = True
else:
if is_progression_last_line:
output_converter.write(os.linesep)
is_progression_last_line = False
output_converter.write(output)
output_converter.flush()

Expand Down

0 comments on commit 0de9dab

Please sign in to comment.