mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Tools: Don't check the environment during idf.py shell completion
Closes https://github.com/espressif/esp-idf/issues/8362
This commit is contained in:
parent
0d03c17ab2
commit
49e9f254c5
38
tools/idf.py
38
tools/idf.py
@ -32,8 +32,14 @@ from pkgutil import iter_modules
|
||||
sys.dont_write_bytecode = True
|
||||
|
||||
import python_version_checker # noqa: E402
|
||||
from idf_py_actions.errors import FatalError # noqa: E402
|
||||
from idf_py_actions.tools import executable_exists, idf_version, merge_action_lists, realpath # noqa: E402
|
||||
|
||||
try:
|
||||
from idf_py_actions.errors import FatalError # noqa: E402
|
||||
from idf_py_actions.tools import executable_exists, idf_version, merge_action_lists, realpath # noqa: E402
|
||||
except ImportError:
|
||||
# For example, importing click could cause this.
|
||||
print('Please use idf.py only in an ESP-IDF shell environment.', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
# Use this Python interpreter for any subprocesses we launch
|
||||
PYTHON = sys.executable
|
||||
@ -46,13 +52,18 @@ os.environ['PYTHON'] = sys.executable
|
||||
# Can be overridden from idf.bat using IDF_PY_PROGRAM_NAME
|
||||
PROG = os.getenv('IDF_PY_PROGRAM_NAME', 'idf.py')
|
||||
|
||||
# environment variable used during click shell completion run
|
||||
SHELL_COMPLETE_VAR = '_IDF.PY_COMPLETE'
|
||||
|
||||
# was shell completion invoked?
|
||||
SHELL_COMPLETE_RUN = SHELL_COMPLETE_VAR in os.environ
|
||||
|
||||
|
||||
# function prints warning when autocompletion is not being performed
|
||||
# set argument stream to sys.stderr for errors and exceptions
|
||||
def print_warning(message, stream=None):
|
||||
stream = stream or sys.stderr
|
||||
if not os.getenv('_IDF.PY_COMPLETE'):
|
||||
print(message, file=stream)
|
||||
if not SHELL_COMPLETE_RUN:
|
||||
print(message, file=stream or sys.stderr)
|
||||
|
||||
|
||||
def check_environment():
|
||||
@ -729,14 +740,21 @@ def signal_handler(_signal, _frame):
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
# Processing of Ctrl+C event for all threads made by main()
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
|
||||
checks_output = check_environment()
|
||||
cli = init_cli(verbose_output=checks_output)
|
||||
# the argument `prog_name` must contain name of the file - not the absolute path to it!
|
||||
cli(sys.argv[1:], prog_name=PROG, complete_var='_IDF.PY_COMPLETE')
|
||||
# Check the environment only when idf.py is invoked regularly from command line.
|
||||
checks_output = None if SHELL_COMPLETE_RUN else check_environment()
|
||||
|
||||
try:
|
||||
cli = init_cli(verbose_output=checks_output)
|
||||
except ImportError:
|
||||
if SHELL_COMPLETE_RUN:
|
||||
pass
|
||||
else:
|
||||
raise
|
||||
else:
|
||||
cli(sys.argv[1:], prog_name=PROG, complete_var=SHELL_COMPLETE_VAR)
|
||||
|
||||
|
||||
def _valid_unicode_config():
|
||||
|
Loading…
Reference in New Issue
Block a user