mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 17:19:09 -04:00
This is partial backport of following commit, which changes print_hints to generate_hints. commit 92ef2a4c835ac5d6043ee14678ce0c5c941d3c63 Author: simon.chupin <simon.chupin@espressif.com> Date: Tue Aug 9 15:39:23 2022 +0200 Tools: Add unit tests for idf.py hints Only hunks for core_ext.py and tools.py are picked. It would be possible to use the original print_hints approach, where the hints are directly printed out and not returned, but it seems to make sense to keep it closer to most recent version. It should make further backports easier and it allows to cherry pick the iterative hints approach. Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
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