-
Notifications
You must be signed in to change notification settings - Fork 138
[FEATURE] Add apm marketplace generate command to pack all plugins and produce a marketplace.json #722
Copy link
Copy link
Open
Labels
acceptedDeprecated: use status/accepted. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use status/accepted. Kept for issue history; will be removed in milestone 0.10.0.enhancementDeprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.marketplaceDeprecated: use area/marketplace. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use area/marketplace. Kept for issue history; will be removed in milestone 0.10.0.needs-designDeprecated: use status/needs-design. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use status/needs-design. Kept for issue history; will be removed in milestone 0.10.0.
Metadata
Metadata
Assignees
Labels
acceptedDeprecated: use status/accepted. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use status/accepted. Kept for issue history; will be removed in milestone 0.10.0.enhancementDeprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.marketplaceDeprecated: use area/marketplace. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use area/marketplace. Kept for issue history; will be removed in milestone 0.10.0.needs-designDeprecated: use status/needs-design. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use status/needs-design. Kept for issue history; will be removed in milestone 0.10.0.
Type
Projects
Status
In Progress
Is your feature request related to a problem? Please describe.
The
apm pack --format plugincommand can produce a self-contained plugin bundle from a singleapm.ymlproject. However, there is no way to do this for an entire collection of plugins at once, nor to generate the resultingmarketplace.jsonthat aggregates them for discovery and governance.The
apm marketplacecommand group exists but only covers consuming marketplaces (add,browse,list,remove,update). There is no way to produce a marketplace index from a set of local plugin projects without writing custom scripts.This forces teams to maintain their own generation scripts (e.g. a Node.js script that walks a
plugins/directory, callsapm pack --format pluginon each, and assemblesmarketplace.jsonby hand), which is error-prone and not portable.Describe the solution you'd like
Introduce a dedicated
marketplace.ymldefinition file at the root of the repository that declares which plugin projects to include in the marketplace.apm marketplace generatewould read this file to know what to compile, then pack each plugin and assemble the resultingmarketplace.json.Example
marketplace.yml:Add a new
apm marketplace generatesubcommand that:marketplace.yml(or a path passed via--config) to determine which plugin projects to include.apm pack --format pluginon each declared plugin path, which produces each plugin'splugin.jsonand associated build artifacts.plugin.jsonto collect resolved metadata.marketplace.jsonfile defined in theoutputfield, aggregating all plugins — meaning a single command indirectly generates allplugin.jsonfiles and the finalmarketplace.json.Proposed usage:
This single command would replace the following manual sequence:
Expected output (
marketplace.json):{ "name": "my-org-marketplace", "metadata": { "description": "Internal plugin marketplace for my organization", "version": "1.0.0", "pluginRoot": "./plugins" }, "owner": { "name": "My org", "email": "my-org@example.fr" }, "plugins": [ { "name": "halo-angular", "version": "1.0.0", "description": "APM project for halo-angular", "source": { "source": "github", "repo": "org/repo" } } ] }Describe alternatives you've considered
apm pack, and assemblemarketplace.json. This works but is not portable and must be duplicated across every team using APM.marketplace.jsonby hand. This is error-prone and breaks as soon as plugin versions are bumped.apm marketplace add+apm marketplace update: These commands manage the local marketplace registry for consuming plugins, not for publishing/generating a marketplace index file.