esp-idf/tools/idf_py_actions
Peter Dragun 5085763984 fix(tools): idf.py: fix detection of raw core dump file
When idf.py coredump-debug is launched with '--core' argument, it
tries to determine the file format (raw, elf, b64). To detect the
'raw' core dump the code checked if the version word matched one of
the known values.
However, the version word also contains the chip ID in the high
half-word, so the check failed for anything other than the ESP32.
The detection of core file format has been moved to esp-coredump
package in version 1.9.0, including the fix for chip ID.

Reported in https://github.com/espressif/esp-idf/issues/10852
2023-12-07 13:48:04 +01:00
..
hint_modules
README.md
__init__.py
constants.py feat(esp32c5): add esp32c5 target in kconfig and tools 2023-11-28 16:14:17 +08:00
core_ext.py feat(tools): esp_idf_size.ng integration 2023-11-30 09:26:51 +01:00
create_ext.py
debug_ext.py fix(tools): idf.py: fix detection of raw core dump file 2023-12-07 13:48:04 +01:00
dfu_ext.py
errors.py
global_options.py
hints.yml feat(hints): Added hint for LIBUSB_ERROR_NOT_FOUND 2023-11-02 15:33:00 +01:00
qemu_ext.py feat(tools): add 'idf.py qemu' extension 2023-12-03 07:45:19 +01:00
roms.json
roms_schema.json
serial_ext.py
tools.py
uf2_ext.py

README.md

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