Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Update Manager Refactor #1259

Draft
wants to merge 7 commits into
base: wip/support-uploading-packages
Choose a base branch
from

Conversation

jaxwilko
Copy link
Member

@jaxwilko jaxwilko commented Nov 29, 2024

Me and Luke are working on a little refactor of how the UpdateManager works...

It also includes some components from my old composer PR found here: #967

The core idea of this is that there should be consistent interfaces to interact with different things built on top of Winter (i.e. modules, plugins & themes). Each of these elements will now have their class (i.e. Theme, PluginBase, ModuleServiceProvider) will now extend WinterExtension which will allow them to all interact with the update manager and other system functions directly.

In addition PluginManager, ThemeManager & ModuleManager (new) will all implement the ExtensionManager interface, which will allow for a consistant way to interact with all Winter extensions.

I.e. You will be able to call PluginManager::instance()->update($plugin) or ThemeManager::instance()->update($theme).

This also allows us to do some cool stuff like (only support for plugin installing is currently functional)

(new ExtensionSource(
    ExtensionSource::SOURCE_COMPOSER,
    ExtensionSource::TYPE_PLUGIN,
    composerPackage: 'jaxwilko/datamigrator'
))->install();

(new ExtensionSource(
    ExtensionSource::SOURCE_COMPOSER,
    ExtensionSource::TYPE_THEME,
    composerPackage: 'jaxwilko/custom-theme'
))->install();

(new ExtensionSource(
    ExtensionSource::SOURCE_LOCAL,
    ExtensionSource::TYPE_PLUGIN,
    code: 'winter.demo'
))->install();

(new ExtensionSource(
    ExtensionSource::SOURCE_LOCAL,
    ExtensionSource::TYPE_PLUGIN,
    path: 'plugins/winter/demo'
))->install();

By the end of the PR, the UpdateManager as is may no longer exist as is, instead each ExtensionManager will be responsible for it's existing functionality.

@jaxwilko jaxwilko marked this pull request as draft November 29, 2024 18:41
@jaxwilko jaxwilko requested a review from LukeTowers November 29, 2024 18:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant