esp-idf/tools/idf_py_actions
Ivan Grokhotkov d04b554065
tools: idf.py: enable CLICOLOR_FORCE for interactive builds
If stdout is a TTY (meaning that the output is not redirected), tell
the build tool (GNU Make or Ninja) to enable colorized output.

GNU Make and Ninja also check if their stdout is redirected and
strip color escape sequences in that case. CLICOLOR_FORCE environment
variable overrides this behavior.

With this change, if the compiler was launched with the
-fcolor-diagnostics flag and idf.py output is not redirected, the
final output in the terminal will be colorized.

(-fcolor-diagnostics is handled at CMake level by the previous commit)
2022-08-30 16:38:13 +02: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: idf.py: enable CLICOLOR_FORCE for interactive builds 2022-08-30 16:38:13 +02:00
core_ext.py tools: Add CSV support to idf_size.py 2022-08-26 15:34:21 +02:00
create_ext.py tools: Add python types hints 2022-06-15 14:33:29 +02:00
debug_ext.py tools: use built-in USB_SERIAL_JTAG for "idf.py openocd" on C3 and S3 2022-08-05 18:22:30 +02:00
dfu_ext.py dfu: add esp32s3 to supported DFU targets for idf.py 2022-07-11 15:58:21 +08:00
errors.py tools: Add python types hints 2022-06-15 14:33:29 +02:00
global_options.py idf.py: Change copyright in tools dir 2022-05-24 14:01:50 +02:00
hints.yml tools: fix hints templates 2022-08-25 18:00:23 +02:00
README.md Fix typo and naming format for extensions 2019-10-30 10:34:17 +01:00
serial_ext.py Tools: Disable idf.py hints for IDF Monitor 2022-08-25 14:53:41 +02:00
tools.py tools: idf.py: enable CLICOLOR_FORCE for interactive builds 2022-08-30 16:38:13 +02:00
uf2_ext.py tools: Add python types hints 2022-06-15 14:33:29 +02: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