We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
feature:  Set the meltano.yml path in a directory different from the project 
### Feature scope

Configuration (settings parsing, validation, etc.)

### Description

I really tried to make a docker container with meltano to run in AWS Lambda, but I had a lot of problems because in my case I needed to change meltano.yml in run time, but only possible to change files in AWS Lambda if this file is in /tmp.

I believe could be a great feature if it is possible to set meltano.yml path by a environment variable. I tried to change this meltano source code but I had problems with the plugins installations. These changes are beyond my skills. 

So I propose this new feature like other projects have (DBT as an example), where it is possible set a new configuration file or set a path for the configuration file.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `src/meltano/cli/add.py`
Content:
```
1 """Plugin Add CLI."""
2 
3 from __future__ import annotations
4 
5 import typing as t
6 from pathlib import Path
7 from urllib.parse import urlparse
8 
9 import click
10 import requests
11 
12 from meltano.cli.params import pass_project
13 from meltano.cli.utils import (
14     CliError,
15     PartialInstrumentedCmd,
16     add_plugin,
17     add_required_plugins,
18     check_dependencies_met,
19     install_plugins,
20 )
21 from meltano.core.plugin import PluginRef, PluginType
22 from meltano.core.plugin_install_service import PluginInstallReason
23 from meltano.core.project_add_service import ProjectAddService
24 from meltano.core.tracking.contexts import CliEvent, PluginsTrackingContext
25 from meltano.core.yaml import yaml
26 
27 if t.TYPE_CHECKING:
28     from meltano.core.plugin.project_plugin import ProjectPlugin
29     from meltano.core.project import Project
30     from meltano.core.tracking import Tracker
31 
32 
33 def _load_yaml_from_ref(_ctx, _param, value: str | None) -> dict:
34     if not value:
35         return
36 
37     try:
38         url = urlparse(value)
39         if url.scheme and url.netloc:
40             response = requests.get(value, timeout=10)
41             response.raise_for_status()
42             content = response.text
43         else:
44             content = Path(value).read_text()
45 
46     except (ValueError, FileNotFoundError, IsADirectoryError) as e:
47         raise click.BadParameter(e) from e
48 
49     return yaml.load(content) or {}
50 
51 
52 @click.command(  # noqa: WPS238
53     cls=PartialInstrumentedCmd,
54     short_help="Add a plugin to your project.",
55 )
56 @click.argument("plugin_type", type=click.Choice(PluginType.cli_arguments()))
57 @click.argument("plugin_name", nargs=-1, required=True)
58 @click.option(
59     "--inherit-from",
60     help=(
61         "Add a plugin inheriting from an existing plugin in the project"
62         " or a discoverable plugin identified, by name."
63     ),
64 )
65 @click.option(
66     "--variant",
67     help="Add a specific (non-default) variant of the identified discoverable plugin.",
68 )
69 @click.option(
70     "--as",
71     "as_name",
72     help=(
73         "Shorthand for '--inherit-from', that can be used to add a "
74         "discoverable plugin to your project with a different name. "
75         "Usage:\b\n\nadd <type> <inherit-from> --as <name>"
76     ),
77 )
78 @click.option(
79     "--from-ref",
80     "plugin_yaml",
81     callback=_load_yaml_from_ref,
82     help="Reference a plugin defintion to add from.",
83 )
84 @click.option(
85     "--python",
86     help=(
87         "The Python version to use for the plugin. Only applies to base plugins which "
88         "have Python virtual environments, rather than inherited plugins which use the "
89         "virtual environment of their base plugin, or plugins that run in a container."
90     ),
91 )
92 @click.option(
93     "--custom",
94     is_flag=True,
95     help=(
96         "Add a custom plugin. The command will prompt you for the package's "
97         "base plugin description metadata."
98     ),
99 )
100 @click.option(
101     "--no-install",
102     is_flag=True,
103     help="Do not install the plugin after adding it to the project.",
104 )
105 @pass_project()
106 @click.pass_context
107 def add(  # noqa: WPS238
108     ctx,
109     project: Project,
110     plugin_type: str,
111     plugin_name: str,
112     inherit_from: str | None = None,
113     variant: str | None = None,
114     as_name: str | None = None,
115     plugin_yaml: dict | None = None,
116     python: str | None = None,
117     **flags,
118 ):
119     """
120     Add a plugin to your project.
121 
122     \b\nRead more at https://docs.meltano.com/reference/command-line-interface#add
123     """
124     tracker: Tracker = ctx.obj["tracker"]
125 
126     plugin_type = PluginType.from_cli_argument(plugin_type)
127     plugin_names = plugin_name  # nargs=-1
128 
129     if as_name:
130         # `add <type> <inherit-from> --as <name>``
131         # is equivalent to:
132         # `add <type> <name> --inherit-from <inherit-from>``
133         inherit_from = plugin_names[0]
134         plugin_names = [as_name]
135 
136     if flags["custom"] and plugin_type in {
137         PluginType.TRANSFORMS,
138         PluginType.ORCHESTRATORS,
139     }:
140         tracker.track_command_event(CliEvent.aborted)
141         raise CliError(f"--custom is not supported for {plugin_type}")
142 
143     plugin_refs = [
144         PluginRef(plugin_type=plugin_type, name=name) for name in plugin_names
145     ]
146     dependencies_met, err = check_dependencies_met(
147         plugin_refs=plugin_refs,
148         plugins_service=project.plugins,
149     )
150     if not dependencies_met:
151         tracker.track_command_event(CliEvent.aborted)
152         raise CliError(f"Failed to install plugin(s): {err}")
153 
154     add_service = ProjectAddService(project)
155 
156     plugins: list[ProjectPlugin] = []
157     for plugin in plugin_names:
158         try:
159             plugins.append(
160                 add_plugin(
161                     plugin_type,
162                     plugin,
163                     python=python,
164                     inherit_from=inherit_from,
165                     variant=variant,
166                     custom=flags["custom"],
167                     add_service=add_service,
168                     plugin_yaml=plugin_yaml,
169                 ),
170             )
171         except Exception:
172             # if the plugin is not known to meltano send what information we do have
173             tracker.add_contexts(
174                 PluginsTrackingContext([(plugin, None) for plugin in plugins]),
175             )
176             tracker.track_command_event(CliEvent.aborted)
177             raise
178 
179         required_plugins = add_required_plugins(
180             plugins,
181             add_service=add_service,
182         )
183     plugins.extend(required_plugins)
184     tracker.add_contexts(
185         PluginsTrackingContext([(candidate, None) for candidate in plugins]),
186     )
187     tracker.track_command_event(CliEvent.inflight)
188 
189     if not flags.get("no_install"):
190         success = install_plugins(project, plugins, reason=PluginInstallReason.ADD)
191 
192         if not success:
193             tracker.track_command_event(CliEvent.failed)
194             raise CliError("Failed to install plugin(s)")
195 
196     _print_plugins(plugins)
197     tracker.track_command_event(CliEvent.completed)
198 
199 
200 def _print_plugins(plugins):
201     printed_empty_line = False
202     for plugin in plugins:
203         docs_url = plugin.docs or plugin.repo
204         if not docs_url:
205             continue
206 
207         if not printed_empty_line:
208             click.echo()
209             printed_empty_line = True
210 
211         click.echo(
212             f"To learn more about {plugin.type.descriptor} '{plugin.name}', "
213             f"visit {docs_url}",
214         )
215
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/src/meltano/cli/add.py b/src/meltano/cli/add.py
--- a/src/meltano/cli/add.py
+++ b/src/meltano/cli/add.py
@@ -102,6 +102,11 @@
     is_flag=True,
     help="Do not install the plugin after adding it to the project.",
 )
+@click.option(
+    "--force-install",
+    is_flag=True,
+    help="Ignore the required Python version declared by the plugins.",
+)
 @pass_project()
 @click.pass_context
 def add(  # noqa: WPS238
@@ -187,7 +192,12 @@
     tracker.track_command_event(CliEvent.inflight)
 
     if not flags.get("no_install"):
-        success = install_plugins(project, plugins, reason=PluginInstallReason.ADD)
+        success = install_plugins(
+            project,
+            plugins,
+            reason=PluginInstallReason.ADD,
+            force=flags.get("force_install", False),
+        )
 
         if not success:
             tracker.track_command_event(CliEvent.failed)

{"golden_diff": "diff --git a/src/meltano/cli/add.py b/src/meltano/cli/add.py\n--- a/src/meltano/cli/add.py\n+++ b/src/meltano/cli/add.py\n@@ -102,6 +102,11 @@\n     is_flag=True,\n     help=\"Do not install the plugin after adding it to the project.\",\n )\n+@click.option(\n+    \"--force-install\",\n+    is_flag=True,\n+    help=\"Ignore the required Python version declared by the plugins.\",\n+)\n @pass_project()\n @click.pass_context\n def add(  # noqa: WPS238\n@@ -187,7 +192,12 @@\n     tracker.track_command_event(CliEvent.inflight)\n \n     if not flags.get(\"no_install\"):\n-        success = install_plugins(project, plugins, reason=PluginInstallReason.ADD)\n+        success = install_plugins(\n+            project,\n+            plugins,\n+            reason=PluginInstallReason.ADD,\n+            force=flags.get(\"force_install\", False),\n+        )\n \n         if not success:\n             tracker.track_command_event(CliEvent.failed)\n", "issue": "feature:  Set the meltano.yml path in a directory different from the project \n### Feature scope\n\nConfiguration (settings parsing, validation, etc.)\n\n### Description\n\nI really tried to make a docker container with meltano to run in AWS Lambda, but I had a lot of problems because in my case I needed to change meltano.yml in run time, but only possible to change files in AWS Lambda if this file is in /tmp.\r\n\r\nI believe could be a great feature if it is possible to set meltano.yml path by a environment variable. I tried to change this meltano source code but I had problems with the plugins installations. These changes are beyond my skills. \r\n\r\nSo I propose this new feature like other projects have (DBT as an example), where it is possible set a new configuration file or set a path for the configuration file.\n", "before_files": [{"content": "\"\"\"Plugin Add CLI.\"\"\"\n\nfrom __future__ import annotations\n\nimport typing as t\nfrom pathlib import Path\nfrom urllib.parse import urlparse\n\nimport click\nimport requests\n\nfrom meltano.cli.params import pass_project\nfrom meltano.cli.utils import (\n    CliError,\n    PartialInstrumentedCmd,\n    add_plugin,\n    add_required_plugins,\n    check_dependencies_met,\n    install_plugins,\n)\nfrom meltano.core.plugin import PluginRef, PluginType\nfrom meltano.core.plugin_install_service import PluginInstallReason\nfrom meltano.core.project_add_service import ProjectAddService\nfrom meltano.core.tracking.contexts import CliEvent, PluginsTrackingContext\nfrom meltano.core.yaml import yaml\n\nif t.TYPE_CHECKING:\n    from meltano.core.plugin.project_plugin import ProjectPlugin\n    from meltano.core.project import Project\n    from meltano.core.tracking import Tracker\n\n\ndef _load_yaml_from_ref(_ctx, _param, value: str | None) -> dict:\n    if not value:\n        return\n\n    try:\n        url = urlparse(value)\n        if url.scheme and url.netloc:\n            response = requests.get(value, timeout=10)\n            response.raise_for_status()\n            content = response.text\n        else:\n            content = Path(value).read_text()\n\n    except (ValueError, FileNotFoundError, IsADirectoryError) as e:\n        raise click.BadParameter(e) from e\n\n    return yaml.load(content) or {}\n\n\n@click.command(  # noqa: WPS238\n    cls=PartialInstrumentedCmd,\n    short_help=\"Add a plugin to your project.\",\n)\n@click.argument(\"plugin_type\", type=click.Choice(PluginType.cli_arguments()))\n@click.argument(\"plugin_name\", nargs=-1, required=True)\n@click.option(\n    \"--inherit-from\",\n    help=(\n        \"Add a plugin inheriting from an existing plugin in the project\"\n        \" or a discoverable plugin identified, by name.\"\n    ),\n)\n@click.option(\n    \"--variant\",\n    help=\"Add a specific (non-default) variant of the identified discoverable plugin.\",\n)\n@click.option(\n    \"--as\",\n    \"as_name\",\n    help=(\n        \"Shorthand for '--inherit-from', that can be used to add a \"\n        \"discoverable plugin to your project with a different name. \"\n        \"Usage:\\b\\n\\nadd <type> <inherit-from> --as <name>\"\n    ),\n)\n@click.option(\n    \"--from-ref\",\n    \"plugin_yaml\",\n    callback=_load_yaml_from_ref,\n    help=\"Reference a plugin defintion to add from.\",\n)\n@click.option(\n    \"--python\",\n    help=(\n        \"The Python version to use for the plugin. Only applies to base plugins which \"\n        \"have Python virtual environments, rather than inherited plugins which use the \"\n        \"virtual environment of their base plugin, or plugins that run in a container.\"\n    ),\n)\n@click.option(\n    \"--custom\",\n    is_flag=True,\n    help=(\n        \"Add a custom plugin. The command will prompt you for the package's \"\n        \"base plugin description metadata.\"\n    ),\n)\n@click.option(\n    \"--no-install\",\n    is_flag=True,\n    help=\"Do not install the plugin after adding it to the project.\",\n)\n@pass_project()\n@click.pass_context\ndef add(  # noqa: WPS238\n    ctx,\n    project: Project,\n    plugin_type: str,\n    plugin_name: str,\n    inherit_from: str | None = None,\n    variant: str | None = None,\n    as_name: str | None = None,\n    plugin_yaml: dict | None = None,\n    python: str | None = None,\n    **flags,\n):\n    \"\"\"\n    Add a plugin to your project.\n\n    \\b\\nRead more at https://docs.meltano.com/reference/command-line-interface#add\n    \"\"\"\n    tracker: Tracker = ctx.obj[\"tracker\"]\n\n    plugin_type = PluginType.from_cli_argument(plugin_type)\n    plugin_names = plugin_name  # nargs=-1\n\n    if as_name:\n        # `add <type> <inherit-from> --as <name>``\n        # is equivalent to:\n        # `add <type> <name> --inherit-from <inherit-from>``\n        inherit_from = plugin_names[0]\n        plugin_names = [as_name]\n\n    if flags[\"custom\"] and plugin_type in {\n        PluginType.TRANSFORMS,\n        PluginType.ORCHESTRATORS,\n    }:\n        tracker.track_command_event(CliEvent.aborted)\n        raise CliError(f\"--custom is not supported for {plugin_type}\")\n\n    plugin_refs = [\n        PluginRef(plugin_type=plugin_type, name=name) for name in plugin_names\n    ]\n    dependencies_met, err = check_dependencies_met(\n        plugin_refs=plugin_refs,\n        plugins_service=project.plugins,\n    )\n    if not dependencies_met:\n        tracker.track_command_event(CliEvent.aborted)\n        raise CliError(f\"Failed to install plugin(s): {err}\")\n\n    add_service = ProjectAddService(project)\n\n    plugins: list[ProjectPlugin] = []\n    for plugin in plugin_names:\n        try:\n            plugins.append(\n                add_plugin(\n                    plugin_type,\n                    plugin,\n                    python=python,\n                    inherit_from=inherit_from,\n                    variant=variant,\n                    custom=flags[\"custom\"],\n                    add_service=add_service,\n                    plugin_yaml=plugin_yaml,\n                ),\n            )\n        except Exception:\n            # if the plugin is not known to meltano send what information we do have\n            tracker.add_contexts(\n                PluginsTrackingContext([(plugin, None) for plugin in plugins]),\n            )\n            tracker.track_command_event(CliEvent.aborted)\n            raise\n\n        required_plugins = add_required_plugins(\n            plugins,\n            add_service=add_service,\n        )\n    plugins.extend(required_plugins)\n    tracker.add_contexts(\n        PluginsTrackingContext([(candidate, None) for candidate in plugins]),\n    )\n    tracker.track_command_event(CliEvent.inflight)\n\n    if not flags.get(\"no_install\"):\n        success = install_plugins(project, plugins, reason=PluginInstallReason.ADD)\n\n        if not success:\n            tracker.track_command_event(CliEvent.failed)\n            raise CliError(\"Failed to install plugin(s)\")\n\n    _print_plugins(plugins)\n    tracker.track_command_event(CliEvent.completed)\n\n\ndef _print_plugins(plugins):\n    printed_empty_line = False\n    for plugin in plugins:\n        docs_url = plugin.docs or plugin.repo\n        if not docs_url:\n            continue\n\n        if not printed_empty_line:\n            click.echo()\n            printed_empty_line = True\n\n        click.echo(\n            f\"To learn more about {plugin.type.descriptor} '{plugin.name}', \"\n            f\"visit {docs_url}\",\n        )\n", "path": "src/meltano/cli/add.py"}], "after_files": [{"content": "\"\"\"Plugin Add CLI.\"\"\"\n\nfrom __future__ import annotations\n\nimport typing as t\nfrom pathlib import Path\nfrom urllib.parse import urlparse\n\nimport click\nimport requests\n\nfrom meltano.cli.params import pass_project\nfrom meltano.cli.utils import (\n    CliError,\n    PartialInstrumentedCmd,\n    add_plugin,\n    add_required_plugins,\n    check_dependencies_met,\n    install_plugins,\n)\nfrom meltano.core.plugin import PluginRef, PluginType\nfrom meltano.core.plugin_install_service import PluginInstallReason\nfrom meltano.core.project_add_service import ProjectAddService\nfrom meltano.core.tracking.contexts import CliEvent, PluginsTrackingContext\nfrom meltano.core.yaml import yaml\n\nif t.TYPE_CHECKING:\n    from meltano.core.plugin.project_plugin import ProjectPlugin\n    from meltano.core.project import Project\n    from meltano.core.tracking import Tracker\n\n\ndef _load_yaml_from_ref(_ctx, _param, value: str | None) -> dict:\n    if not value:\n        return\n\n    try:\n        url = urlparse(value)\n        if url.scheme and url.netloc:\n            response = requests.get(value, timeout=10)\n            response.raise_for_status()\n            content = response.text\n        else:\n            content = Path(value).read_text()\n\n    except (ValueError, FileNotFoundError, IsADirectoryError) as e:\n        raise click.BadParameter(e) from e\n\n    return yaml.load(content) or {}\n\n\n@click.command(  # noqa: WPS238\n    cls=PartialInstrumentedCmd,\n    short_help=\"Add a plugin to your project.\",\n)\n@click.argument(\"plugin_type\", type=click.Choice(PluginType.cli_arguments()))\n@click.argument(\"plugin_name\", nargs=-1, required=True)\n@click.option(\n    \"--inherit-from\",\n    help=(\n        \"Add a plugin inheriting from an existing plugin in the project\"\n        \" or a discoverable plugin identified, by name.\"\n    ),\n)\n@click.option(\n    \"--variant\",\n    help=\"Add a specific (non-default) variant of the identified discoverable plugin.\",\n)\n@click.option(\n    \"--as\",\n    \"as_name\",\n    help=(\n        \"Shorthand for '--inherit-from', that can be used to add a \"\n        \"discoverable plugin to your project with a different name. \"\n        \"Usage:\\b\\n\\nadd <type> <inherit-from> --as <name>\"\n    ),\n)\n@click.option(\n    \"--from-ref\",\n    \"plugin_yaml\",\n    callback=_load_yaml_from_ref,\n    help=\"Reference a plugin defintion to add from.\",\n)\n@click.option(\n    \"--python\",\n    help=(\n        \"The Python version to use for the plugin. Only applies to base plugins which \"\n        \"have Python virtual environments, rather than inherited plugins which use the \"\n        \"virtual environment of their base plugin, or plugins that run in a container.\"\n    ),\n)\n@click.option(\n    \"--custom\",\n    is_flag=True,\n    help=(\n        \"Add a custom plugin. The command will prompt you for the package's \"\n        \"base plugin description metadata.\"\n    ),\n)\n@click.option(\n    \"--no-install\",\n    is_flag=True,\n    help=\"Do not install the plugin after adding it to the project.\",\n)\n@click.option(\n    \"--force-install\",\n    is_flag=True,\n    help=\"Ignore the required Python version declared by the plugins.\",\n)\n@pass_project()\n@click.pass_context\ndef add(  # noqa: WPS238\n    ctx,\n    project: Project,\n    plugin_type: str,\n    plugin_name: str,\n    inherit_from: str | None = None,\n    variant: str | None = None,\n    as_name: str | None = None,\n    plugin_yaml: dict | None = None,\n    python: str | None = None,\n    **flags,\n):\n    \"\"\"\n    Add a plugin to your project.\n\n    \\b\\nRead more at https://docs.meltano.com/reference/command-line-interface#add\n    \"\"\"\n    tracker: Tracker = ctx.obj[\"tracker\"]\n\n    plugin_type = PluginType.from_cli_argument(plugin_type)\n    plugin_names = plugin_name  # nargs=-1\n\n    if as_name:\n        # `add <type> <inherit-from> --as <name>``\n        # is equivalent to:\n        # `add <type> <name> --inherit-from <inherit-from>``\n        inherit_from = plugin_names[0]\n        plugin_names = [as_name]\n\n    if flags[\"custom\"] and plugin_type in {\n        PluginType.TRANSFORMS,\n        PluginType.ORCHESTRATORS,\n    }:\n        tracker.track_command_event(CliEvent.aborted)\n        raise CliError(f\"--custom is not supported for {plugin_type}\")\n\n    plugin_refs = [\n        PluginRef(plugin_type=plugin_type, name=name) for name in plugin_names\n    ]\n    dependencies_met, err = check_dependencies_met(\n        plugin_refs=plugin_refs,\n        plugins_service=project.plugins,\n    )\n    if not dependencies_met:\n        tracker.track_command_event(CliEvent.aborted)\n        raise CliError(f\"Failed to install plugin(s): {err}\")\n\n    add_service = ProjectAddService(project)\n\n    plugins: list[ProjectPlugin] = []\n    for plugin in plugin_names:\n        try:\n            plugins.append(\n                add_plugin(\n                    plugin_type,\n                    plugin,\n                    python=python,\n                    inherit_from=inherit_from,\n                    variant=variant,\n                    custom=flags[\"custom\"],\n                    add_service=add_service,\n                    plugin_yaml=plugin_yaml,\n                ),\n            )\n        except Exception:\n            # if the plugin is not known to meltano send what information we do have\n            tracker.add_contexts(\n                PluginsTrackingContext([(plugin, None) for plugin in plugins]),\n            )\n            tracker.track_command_event(CliEvent.aborted)\n            raise\n\n        required_plugins = add_required_plugins(\n            plugins,\n            add_service=add_service,\n        )\n    plugins.extend(required_plugins)\n    tracker.add_contexts(\n        PluginsTrackingContext([(candidate, None) for candidate in plugins]),\n    )\n    tracker.track_command_event(CliEvent.inflight)\n\n    if not flags.get(\"no_install\"):\n        success = install_plugins(\n            project,\n            plugins,\n            reason=PluginInstallReason.ADD,\n            force=flags.get(\"force_install\", False),\n        )\n\n        if not success:\n            tracker.track_command_event(CliEvent.failed)\n            raise CliError(\"Failed to install plugin(s)\")\n\n    _print_plugins(plugins)\n    tracker.track_command_event(CliEvent.completed)\n\n\ndef _print_plugins(plugins):\n    printed_empty_line = False\n    for plugin in plugins:\n        docs_url = plugin.docs or plugin.repo\n        if not docs_url:\n            continue\n\n        if not printed_empty_line:\n            click.echo()\n            printed_empty_line = True\n\n        click.echo(\n            f\"To learn more about {plugin.type.descriptor} '{plugin.name}', \"\n            f\"visit {docs_url}\",\n        )\n", "path": "src/meltano/cli/add.py"}]}