name: run_target
returns: run_tgt
description: |
  This function creates a new top-level target that runs a specified
  command with the specified arguments. Like all top-level targets, this
  integrates with the selected backend. For instance, you can run it as
  `meson compile target_name`. Note that a run target produces no output
  as far as Meson is concerned. It is only meant for tasks such as
  running a code formatter or flashing an external device's firmware
  with a built file.

  The command is run from an *unspecified* directory, and Meson will set
  three environment variables `MESON_SOURCE_ROOT`, `MESON_BUILD_ROOT`
  and `MESON_SUBDIR` that specify the source directory, build directory
  and subdirectory the target was defined in, respectively.

  *Since 0.57.0* The template strings passed to `command` keyword arguments accept
  the following special substitutions:
  - `@SOURCE_ROOT@`: the path to the root of the source tree. Depending on the backend,
    this may be an absolute or a relative to current workdir path.
  - `@BUILD_ROOT@`: the path to the root of the build tree. Depending on the backend,
    this may be an absolute or a relative to current workdir path.
  - `@CURRENT_SOURCE_DIR@` *Since 0.57.1*: this is the directory where the currently
    processed meson.build is located in. Depending on the backend,
    this may be an absolute or a relative to current workdir path.

posargs:
  target_name:
    type: str
    description: The name of the run target

kwargs:
  command:
    type: array[exe| program | custom_tgt | file | str]
    description: |
      An array containing the command to run and the arguments
      to pass to it. Each array element may be a string or a target. For
      instance, passing the return value of [[executable]]
      as the first item will run that executable, or passing a string as
      the first item will find that command in `PATH` and run it.

  depends:
    type: array[build_tgt | custom_tgt | custom_idx | program]
    description: |
      An array of targets that this target depends on but which
      are not listed in the command array (because, for example, the
      script does file globbing internally, custom_idx was not possible
      as a type between 0.60 and 1.4.0). `program` is supported *since
      1.11.2*.

  env:
    since: 0.57.0
    type: env | array[str] | dict[str]
    description: |
      environment variables to set, such as
      `{'NAME1': 'value1', 'NAME2': 'value2'}` or `['NAME1=value1', 'NAME2=value2']`,
      or an [[@env]] object which allows more sophisticated environment juggling.
