esp-idf/tools/idf_py_actions
Angus Gratton ad295037a8 idf.py: Disable CMake --warn-uninitialized option by default
Can still be enabled by passing --cmake-warn-uninitialized on the command line

Prevents CMake warnings printed by default if IDF_PATH is underneath the CMake
project directory.

The reason for this is that CMake --warn-uninitialized only enables checks
inside the project directory (ie top-level CMakeLists.txt directory and
subdirectories), it doesn't enable for files included from other directories.

(The only way to enable warnings in other directories is to pass
--check-system-dirs and this looks like it's only useful for CMake's own
developers as it prints a lot of warnings from inside CMake otherwise - see
https://gitlab.kitware.com/cmake/cmake/-/issues/19645 )

Plan to follow up with a later commit to clean up most of the warnings (which
aren't problems for CMake execution), but we'll also disable this option by
default to avoid this unexpected triggering of IDF warnings.
2020-08-26 09:53:56 +10:00
..
__init__.py Add idf.py extensions and move core actions to separate files 2019-10-30 10:34:17 +01:00
constants.py global: add new target name: esp32-s3 2020-06-11 21:40:08 +08:00
core_ext.py idf.py: Disable CMake --warn-uninitialized option by default 2020-08-26 09:53:56 +10:00
debug_ext.py tools: idf.py: default to board/esp32s2-kaluga-1.cfg for ESP32-S2 2020-07-24 15:54:47 +02:00
dfu_ext.py Add ability to select a device for DFU flashing 2020-05-28 09:31:35 +02:00
errors.py idf.py: debug targets for easier execution of openocd, gdb, gdbui 2020-04-07 17:37:48 +02:00
global_options.py Add idf.py extensions and move core actions to separate files 2019-10-30 10:34:17 +01:00
README.md Fix typo and naming format for extensions 2019-10-30 10:34:17 +01:00
serial_ext.py Merge branch 'bugfix/verify-directory-exists' into 'master' 2020-07-24 19:53:27 +08:00
tools.py idf.py: Disable CMake --warn-uninitialized option by default 2020-08-26 09:53:56 +10: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