Repository: meltano/meltano

Issue:
Lock file doesn't contain all of the metadata, i.e. `description`, `logo_url`, etc.
Raised by Aaron in office hours.


Discussion:
Can confirm. `StandalonePlugin` should be changed to include those fields: 

https://github.com/meltano/meltano/blob/f0230d7829b66e5e435f7112e3913426b2000b6b/src/meltano/core/plugin/base.py#L726-L747
Thanks!  100% this is it.

## As a user, when I 'meltano add ...' my /plugins/*.lock files do not have the plugin description

 
@tayloramurphy this isn't critical for the functioning of meltano CLI at the moment. It might be for the UI in the future, though. In any case I've labeled this with https://github.com/meltano/meltano/labels/Accepting%20Pull%20Requests.
@edgarrmondragon thanks for the detail. Can you add a weight estimate to the Product Roadmap project for future reference?
@tayloramurphy gh won't let me edit the Prelim Weight field, but this is probably a `2`
@edgarrmondragon oh! that's an access thing. I invited the engineering team to have write access, so should be good there for the future. thanks!

Resolving patch:
diff --git a/src/meltano/core/plugin/base.py b/src/meltano/core/plugin/base.py
--- a/src/meltano/core/plugin/base.py
+++ b/src/meltano/core/plugin/base.py
@@ -64,7 +64,7 @@ def __init__(self, name: str):
 yaml.add_multi_representer(YAMLEnum, YAMLEnum.yaml_representer)
 
 
-class PluginType(YAMLEnum):
+class PluginType(YAMLEnum):  # noqa: WPS214
     """The type of a plugin."""
 
     EXTRACTORS = "extractors"
@@ -259,6 +259,8 @@ def __init__(
         repo: str | None = None,
         pip_url: str | None = None,
         executable: str | None = None,
+        description: str | None = None,
+        logo_url: str | None = None,
         capabilities: list | None = None,
         settings_group_validation: list | None = None,
         settings: list | None = None,
@@ -277,6 +279,8 @@ def __init__(
             repo: The repository URL.
             pip_url: The pip URL.
             executable: The executable name.
+            description: The description of the plugin.
+            logo_url: The logo URL of the plugin.
             capabilities: The capabilities of the variant.
             settings_group_validation: The settings group validation.
             settings: The settings of the variant.
@@ -293,6 +297,8 @@ def __init__(
             repo=repo,
             pip_url=pip_url,
             executable=executable,
+            description=description,
+            logo_url=logo_url,
             capabilities=list(capabilities or []),
             settings_group_validation=list(settings_group_validation or []),
             settings=list(map(SettingDefinition.parse, settings or [])),
@@ -465,6 +471,8 @@ def from_standalone(
             repo=plugin.repo,
             pip_url=plugin.pip_url,
             executable=plugin.executable,
+            description=plugin.description,
+            logo_url=plugin.logo_url,
             capabilities=plugin.capabilities,
             settings_group_validation=plugin.settings_group_validation,
             settings=plugin.settings,
@@ -595,7 +603,7 @@ def all_settings(self):
         return self._variant.settings
 
     @property
-    def extra_settings(self):
+    def extra_settings(self):  # noqa: WPS210
         """Return the extra settings for this plugin.
 
         Returns:
@@ -737,6 +745,8 @@ def __init__(
         repo: str | None = None,
         pip_url: str | None = None,
         executable: str | None = None,
+        description: str | None = None,
+        logo_url: str | None = None,
         capabilities: list | None = None,
         settings_group_validation: list | None = None,
         settings: list | None = None,
@@ -757,6 +767,8 @@ def __init__(
             repo: The repository URL of the plugin.
             pip_url: The pip URL of the plugin.
             executable: The executable of the plugin.
+            description: The description of the plugin.
+            logo_url: The logo URL of the plugin.
             capabilities: The capabilities of the plugin.
             settings_group_validation: The settings group validation of the plugin.
             settings: The settings of the plugin.
@@ -775,6 +787,8 @@ def __init__(
             repo=repo,
             pip_url=pip_url,
             executable=executable,
+            description=description,
+            logo_url=logo_url,
             capabilities=capabilities or [],
             settings_group_validation=settings_group_validation or [],
             settings=list(map(SettingDefinition.parse, settings or [])),
@@ -809,6 +823,8 @@ def from_variant(
             repo=variant.repo,
             pip_url=variant.pip_url,
             executable=variant.executable,
+            description=variant.description,
+            logo_url=variant.logo_url,
             capabilities=variant.capabilities,
             settings_group_validation=variant.settings_group_validation,
             settings=variant.settings,


Test patch:
diff --git a/tests/meltano/core/plugin/test_plugin.py b/tests/meltano/core/plugin/test_plugin.py
--- a/tests/meltano/core/plugin/test_plugin.py
+++ b/tests/meltano/core/plugin/test_plugin.py
@@ -22,6 +22,8 @@ class TestPluginDefinition:
             "repo": "https://gitlab.com/meltano/tap-example",
             "foo": "bar",
             "baz": "qux",
+            "description": "tap-example description",
+            "logo_url": "path/to/tap_example_logo.jpg",
             "requires": {
                 "files": [
                     {