tools: allow alternative spellings of target name (ESP32-S2, ESP32S2)
by ignoring character case and hyphens in target name.
This commit is contained in:
parent
4d53c137e6
commit
7b79b52062
3 changed files with 32 additions and 2 deletions
|
@ -353,6 +353,13 @@ function run_tests()
|
||||||
grep "CONFIG_IDF_TARGET=\"${other_target}\"" sdkconfig || failure "Project not configured correctly using idf.py set-target"
|
grep "CONFIG_IDF_TARGET=\"${other_target}\"" sdkconfig || failure "Project not configured correctly using idf.py set-target"
|
||||||
grep "IDF_TARGET:STRING=${other_target}" build/CMakeCache.txt || failure "IDF_TARGET not set in CMakeCache.txt using idf.py set-target"
|
grep "IDF_TARGET:STRING=${other_target}" build/CMakeCache.txt || failure "IDF_TARGET not set in CMakeCache.txt using idf.py set-target"
|
||||||
|
|
||||||
|
print_status "idf.py understands alternative target names"
|
||||||
|
clean_build_dir
|
||||||
|
rm sdkconfig
|
||||||
|
idf.py set-target ESP32-S2
|
||||||
|
grep "CONFIG_IDF_TARGET=\"${other_target}\"" sdkconfig || failure "Project not configured correctly using idf.py set-target"
|
||||||
|
grep "IDF_TARGET:STRING=${other_target}" build/CMakeCache.txt || failure "IDF_TARGET not set in CMakeCache.txt using idf.py set-target"
|
||||||
|
|
||||||
print_status "Can guess target from sdkconfig, if CMakeCache does not exist"
|
print_status "Can guess target from sdkconfig, if CMakeCache does not exist"
|
||||||
idf.py fullclean || failure "Failed to clean the build directory"
|
idf.py fullclean || failure "Failed to clean the build directory"
|
||||||
idf.py reconfigure || failure "Failed to reconfigure after fullclean"
|
idf.py reconfigure || failure "Failed to reconfigure after fullclean"
|
||||||
|
|
|
@ -8,7 +8,7 @@ import click
|
||||||
from idf_py_actions.constants import GENERATORS, SUPPORTED_TARGETS
|
from idf_py_actions.constants import GENERATORS, SUPPORTED_TARGETS
|
||||||
from idf_py_actions.errors import FatalError
|
from idf_py_actions.errors import FatalError
|
||||||
from idf_py_actions.global_options import global_options
|
from idf_py_actions.global_options import global_options
|
||||||
from idf_py_actions.tools import ensure_build_directory, idf_version, merge_action_lists, realpath, run_target
|
from idf_py_actions.tools import ensure_build_directory, idf_version, merge_action_lists, realpath, run_target, TargetChoice
|
||||||
|
|
||||||
|
|
||||||
def action_extensions(base_actions, project_path):
|
def action_extensions(base_actions, project_path):
|
||||||
|
@ -379,7 +379,7 @@ def action_extensions(base_actions, project_path):
|
||||||
{
|
{
|
||||||
"names": ["idf-target"],
|
"names": ["idf-target"],
|
||||||
"nargs": 1,
|
"nargs": 1,
|
||||||
"type": click.Choice(SUPPORTED_TARGETS),
|
"type": TargetChoice(SUPPORTED_TARGETS),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"dependencies": ["fullclean"],
|
"dependencies": ["fullclean"],
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import click
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -314,3 +315,25 @@ def _guess_or_check_idf_target(args, prog_name, cache):
|
||||||
"To keep the setting in sdkconfig ({t_conf}) and re-generate CMakeCache.txt, run '{prog} fullclean'. "
|
"To keep the setting in sdkconfig ({t_conf}) and re-generate CMakeCache.txt, run '{prog} fullclean'. "
|
||||||
"To re-generate sdkconfig for '{t_cache}' target, run '{prog} set-target {t_cache}'."
|
"To re-generate sdkconfig for '{t_cache}' target, run '{prog} set-target {t_cache}'."
|
||||||
.format(t_conf=idf_target_from_sdkconfig, t_cache=idf_target_from_cache, prog=prog_name))
|
.format(t_conf=idf_target_from_sdkconfig, t_cache=idf_target_from_cache, prog=prog_name))
|
||||||
|
|
||||||
|
|
||||||
|
class TargetChoice(click.Choice):
|
||||||
|
"""
|
||||||
|
A version of click.Choice with two special features:
|
||||||
|
- ignores hyphens
|
||||||
|
- not case sensitive
|
||||||
|
"""
|
||||||
|
def __init__(self, choices):
|
||||||
|
super(TargetChoice, self).__init__(choices, case_sensitive=False)
|
||||||
|
|
||||||
|
def convert(self, value, param, ctx):
|
||||||
|
def normalize(str):
|
||||||
|
return str.lower().replace("-", "")
|
||||||
|
|
||||||
|
saved_token_normalize_func = ctx.token_normalize_func
|
||||||
|
ctx.token_normalize_func = normalize
|
||||||
|
|
||||||
|
try:
|
||||||
|
return super(TargetChoice, self).convert(value, param, ctx)
|
||||||
|
finally:
|
||||||
|
ctx.token_normalize_func = saved_token_normalize_func
|
||||||
|
|
Loading…
Reference in a new issue