name: summary
returns: void
since: 0.53.0
description: |
  This function is used to summarize build configuration at the end of the build
  process. This function provides a way for projects (and subprojects) to report
  this information in a clear way.

  The content is a series of key/value pairs grouped into sections. If
  the section keyword argument is omitted, those key/value pairs are
  implicitly grouped into a section with no title. key/value pairs can
  optionally be grouped into a dictionary, but keep in mind that
  dictionaries do not guarantee ordering. `key` must be string,
  `value` can be:

  - an integer, boolean or string
  - *since 0.57.0* an external program or a dependency
  - *since 0.58.0* a feature option
  - an array of those.

  Instead of calling summary as `summary(key, value)`, it is also possible to
  directly pass a dictionary to the [[summary]] function, as seen in the example
  below.

  `summary()` can be called multiple times as long as the same
  section/key pair doesn't appear twice. All sections will be collected
  and printed at the end of the configuration in the same order as they
  have been called.

example: |
  Example `meson.build`:
  ```meson
  project('My Project', version : '1.0')
  summary({'bindir': get_option('bindir'),
          'libdir': get_option('libdir'),
          'datadir': get_option('datadir'),
          }, section: 'Directories')
  summary({'Some boolean': false,
          'Another boolean': true,
          'Some string': 'Hello World',
          'An array': ['string', 1, true],
          }, section: 'Configuration')
  ```

  Output:
  ```
  My Project 1.0

    Directories
      bindir         : bin
      libdir         : lib/x86_64-linux-gnu
      datadir        : share

    Configuration
      Some boolean   : false
      Another boolean: true
      Some string    : Hello World
      An array       : string
                       1
                       true
  ```

arg_flattening: false

posargs:
  key_or_dict:
    type: str | dict[str | bool | int | dep | program | array[str | bool | int | dep | program]]
    description: |
      The name of the new entry, or a dict containing multiple entries.  If a
      dict is passed it is equivalent to calling summary() once for each
      key-value pair.  Keep in mind that dictionaries do not guarantee
      ordering.

optargs:
  value:
    type: str | bool | int | dep | program | array[str | bool | int | dep | program]
    description: |
      The value to print for the `key`.  Only valid if `key_or_dict` is a str.

kwargs:
  bool_yn:
    type: bool
    default: false
    description: Convert bool values to yes and no
  section:
    type: str
    description: The section to put this summary information under.  If the
      section keyword argument is omitted, key/value pairs are implicitly
      grouped into a section with no title.
  list_sep:
    type: str
    since: 0.54.0
    description: |
      The separator to use when printing array values in this summary.  If no
      separator is given, each array item will be printed on its own line.
