Warn about unknown device monitor filters // Resolve #4362

This commit is contained in:
Ivan Kravets
2022-07-18 17:24:38 +03:00
parent 3a70c902a9
commit 73089b3cb0
3 changed files with 18 additions and 2 deletions

View File

@ -18,6 +18,7 @@ PlatformIO Core 6
* Export a ``PIO_UNIT_TESTING`` macro to the project source files and dependent libraries in the |UNITTESTING| mode
* Improved detection of Windows architecture (`issue #4353 <https://github.com/platformio/platformio-core/issues/4353>`_)
* Warn about unknown `device monitor filters <https://docs.platformio.org/en/latest/core/userguide/device/cmd_monitor.html#filters>`__ (`issue #4362 <https://github.com/platformio/platformio-core/issues/4362>`_)
* Fixed a regression bug when `libArchive <https://docs.platformio.org/en/latest/manifests/library-json/fields/build/libarchive.html>`__ option declared in the `library.json <https://docs.platformio.org/en/latest/manifests/library-json/index.html>`__ manifest was ignored (`issue #4351 <https://github.com/platformio/platformio-core/issues/4351>`_)
* Fixed an issue when the `pio pkg publish <https://docs.platformio.org/en/latest/core/userguide/pkg/cmd_publish.html>`__ command didn't work with Python 3.6 (`issue #4352 <https://github.com/platformio/platformio-core/issues/4352>`_)

View File

@ -20,7 +20,7 @@ import click
from platformio import exception, fs
from platformio.device.finder import find_serial_port
from platformio.device.monitor.filters.base import register_filters
from platformio.device.monitor.terminal import start_terminal
from platformio.device.monitor.terminal import get_available_filters, start_terminal
from platformio.platform.factory import PlatformFactory
from platformio.project.config import ProjectConfig
from platformio.project.exception import NotPlatformIOProjectError
@ -138,6 +138,17 @@ def device_monitor_cmd(**options):
"--exit-char can not be the same as --menu-char"
)
# check for unknown filters
known_filters = set(get_available_filters())
unknown_filters = set(options["filters"]) - known_filters
if unknown_filters:
options["filters"] = list(known_filters & set(options["filters"]))
click.secho(
("Warning! Skipping unknown filters `%s`. Known filters are `%s`")
% (", ".join(unknown_filters), ", ".join(sorted(known_filters))),
fg="yellow",
)
start_terminal(options)

View File

@ -41,6 +41,10 @@ class Terminal(miniterm.Miniterm):
self.pio_unexpected_exception = exc
def get_available_filters():
return sorted(miniterm.TRANSFORMATIONS.keys())
def start_terminal(options):
retries = 0
is_port_valid = False
@ -116,7 +120,7 @@ def print_terminal_settings(terminal):
)
click.echo(
"--- Available filters and text transformations: %s"
% ", ".join(sorted(miniterm.TRANSFORMATIONS.keys()))
% ", ".join(get_available_filters())
)
click.echo("--- More details at https://bit.ly/pio-monitor-filters")
click.echo(