mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
a773072734
Currently we silently ignore when the original component is not found in a hope we can provide at least some meaningful hint. As it turned out it's not true. Instead of providing misleading hint, just return error. This adds several checks for situations, which should not happen, but when they do it should be easier to identify the root cause of the problem. For example when hint module received malformed output with extra new lines, e.g. caused by a bug in RunTool, it wrongly reported the original component as source component. This should also fix the tests on Windows. Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com> |
||
---|---|---|
.. | ||
hint_modules | ||
__init__.py | ||
constants.py | ||
core_ext.py | ||
create_ext.py | ||
debug_ext.py | ||
dfu_ext.py | ||
errors.py | ||
global_options.py | ||
hints.yml | ||
qemu_ext.py | ||
README.md | ||
roms_schema.json | ||
roms.json | ||
serial_ext.py | ||
tools.py | ||
uf2_ext.py |
idf.py extensions
Python modules (subdirectories and files) in this directory named [your_extension]_ext
will be loaded as idf.py extensions.
If you want to provide extra extensions just provide ;
separated list of directories with extensions in IDF_EXTRA_ACTIONS_PATH
. Extensions will be loaded in alphanumeric order.
Command line arguments parsing and extension mechanism is implemented on top of Click (versions >=5.0 are supported).
They should define a function action_extensions(base_actions, project_path)
where:
- base_actions - dictionary with actions that are already available for idf.py
- project_path - working dir, may be defaulted to
os.getcwd()
This function have to return a dict with 3 possible keys:
{
# Additional options that will be available from id
"global_options": [{
"names": ["--option-name"],
"help": "Help for option --option-name.",
}],
# List of functions that will have access to full app context, and can mangle with arguments
"global_action_callbacks": [global_callback],
# Additional subcommands for idf.py
"actions": {
"subcommand_name": {
"callback": subcommand_callback,
"help": "Help for subcommand.",
},
},
}
Where function global_callback(ctx, global_args, tasks)
accepts 3 arguments:
- ctx - Click context
- global_args - dictionary of all available global arguments
- tasks - list of Task objects
And subcommand_callback(subcommand_name, ctx, args)
accepts 3 arguments:
- subcommand_name - name of subcommand
- ctx - Click context
- args - list of command's arguments