esp-idf/tools/idf_py_actions
Djordje Nedic e2815b3d04 bugfix: Fix windows path case sensitivity
This commit fixes an issue where paths on Windows are case insensitive, for instance when setting the build folder its name would be converted to lowercase.

The culprit is our realpath() function, that was calling os.path.normcase() internally, since we are removing that call it makes sense to just remove the function entirely and call os.path.realpath() wherever necessary.

Closes https://github.com/espressif/esp-idf/issues/10282
2023-01-18 22:41:41 +01:00
..
__init__.py Add idf.py extensions and move core actions to separate files 2019-10-30 10:34:17 +01:00
constants.py tools: Add docs subcommand docs which opens browser with documentation for current version of idf and model of your target 2021-07-12 10:56:37 +02:00
core_ext.py bugfix: Fix windows path case sensitivity 2023-01-18 22:41:41 +01:00
create_ext.py style: format python files with isort and double-quote-string-fixer 2021-01-26 10:49:01 +08:00
debug_ext.py Tools: gdbgui is not supported on Python 3.11 2022-11-28 10:29:34 +00:00
dfu_ext.py dfu: add esp32s3 to supported DFU targets for idf.py 2022-07-21 15:58:44 +08:00
errors.py Fixed automatic connection in idf_monitor 2021-02-11 17:35:46 +01:00
global_options.py style: format python files with isort and double-quote-string-fixer 2021-01-26 10:49:01 +08:00
README.md Fix typo and naming format for extensions 2019-10-30 10:34:17 +01:00
serial_ext.py tools: set baudrate and port with otatool. 2022-03-11 15:30:56 +01:00
tools.py bugfix: Fix windows path case sensitivity 2023-01-18 22:41:41 +01:00
uf2_ext.py style: format python files with isort and double-quote-string-fixer 2021-01-26 10:49:01 +08:00

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