Introduce way for Meltano plugins to declare dependencies on other meltano plugins

Examples:

  1. A transform plugin (aka a dbt package), could have a dependency on:

    1. The dbt plugin, optionally pinned to a dbt version.
    2. One of a set of extractor plugins that provide the needed data.
  2. Any plugin that has a same-named files bundle will automatically get the files bundle installed alongside the main plugin.

....

Status quo

Currently we auto-install plugins that share a namespace in discovery.yml. Example: model-adwords has a namespace of tap-adwords, which causes it to be automatically installed: https://gitlab.com/meltano/meltano/blob/master/src%2Fmeltano%2Fcore%2Fbundle%2Fdiscovery.yml#L3216-3221.

This may or may not be feasible to continue, and is much less explicit that we'd like.

Proposal ideas

We could allow plugin defs to point to each other, as "recommended", "suggested", or "required" dependencies.

The pointer could be a ref to an API definition - or it could be a plugin name and variant name combination.

Another option for files bundles, is that each "normal" plugin could declare one or more files: repo links - proposal here: New paradigm for bundling plugin dependencies a... (#3433 - closed)

Edited by AJ Steers