mirror of
https://github.com/kubevela/kubevela.git
synced 2026-05-17 06:46:47 +00:00
* Feat(#5861): Support addon dependencies version ranges This change enables addon maintainers to define version ranges for dependencies in an addon's metadata.yaml file. This behavior is similar to the version range allowed in the `system` section of the metadata file. The version range expression for `dependencies` follows the same format as for `system`. Example: ```yaml dependencies: - name: addon1 version: ">= 2.3.3, < 3.0.0" - name: addon2 version: ">= 0.1.0, < 1.0.0" ``` When installing an addon, the behavior varies depending on whether the dependency is already installed. If a dependency is already installed, the installed version will be validated against the version range, and installation will fail with an error if there's a mismatch. If a dependency is not installed, the version range will be used to select the addon version to be installed. If no addon version matching the range exists, the installation will fail with an error. Fixes #5861 Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): remove unused ctx parameter Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): Add comment for IsLocalRegistry Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): unexport AddonInfoMap Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): unexport addonInfo Signed-off-by: Michael Russo <merusso@gmail.com> * chore: replace map[string]addonInfo with addonInfoMap for consistency Signed-off-by: Michael Russo <merusso@gmail.com> * fix: add short circuit when dependency version is not specified Signed-off-by: Michael Russo <merusso@gmail.com> * feat: Add test for multiple validation errors Signed-off-by: Michael Russo <merusso@gmail.com> * fix: Run go mod tidy Signed-off-by: Michael Russo <merusso@gmail.com> * feat: add tests for ToVersionedRegistry Signed-off-by: Michael Russo <merusso@gmail.com> * fix: simplify listInstalledAddons loop Signed-off-by: Michael Russo <merusso@gmail.com> * feat: listAvailableAddons returns addons from multiple sources Changes: * implement ListAddonInfo in Registry * add interface to aid testing of listAvailableAddons * add tests for listAvailableAddons Signed-off-by: Michael Russo <merusso@gmail.com> * refactor: simplify validateAddonDependencies move logic from validateAddonDependencies to calculateDependencyVersionToInstall. Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): Implicit memory aliasing in for loop. Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): non-wrapping format verb for fmt.Errorf Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): indent-error-flow: (revive) Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): unexported-return Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): exported type comment format (revive) Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): refactor AddonInfo to ItemInfo, avoid "stutter" (revive) Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): add comment to exported method Registry.ListAddonInfo Signed-off-by: Michael Russo <merusso@gmail.com> * fix(lint): fix stutter, rename AddonInfoLister to ItemInfoLister Signed-off-by: Michael Russo <merusso@gmail.com> * chore: Add suite tests for Registry.ListAddonInfo() Signed-off-by: Michael Russo <merusso@gmail.com> * Test: add test cases for addon.sortVersionsDescending Signed-off-by: Michael Russo <merusso@gmail.com> --------- Signed-off-by: Michael Russo <merusso@gmail.com>