Line data Source code
1 : #pragma once
2 :
3 : #include "../iextensioninstaller.h"
4 :
5 : #include "async/asyncable.h"
6 : #include "modularity/ioc.h"
7 : #include "../iextensionsconfiguration.h"
8 : #include "../iextensionsprovider.h"
9 : #include "interactive/iinteractive.h"
10 : #include "io/ifilesystem.h"
11 :
12 : namespace muse::extensions {
13 : class ExtensionInstaller : public IExtensionInstaller, public async::Asyncable, public muse::Contextable
14 : {
15 : muse::GlobalInject<IExtensionsConfiguration> configuration;
16 : muse::GlobalInject<io::IFileSystem> fileSystem;
17 : muse::ContextInject<IExtensionsProvider> provider = { this };
18 : muse::ContextInject<muse::IInteractive> interactive = { this };
19 :
20 : public:
21 0 : ExtensionInstaller(const muse::modularity::ContextPtr& iocCtx)
22 0 : : muse::Contextable(iocCtx) {}
23 :
24 : Ret isFileSupported(const io::path_t& path) const override;
25 : void installExtension(const io::path_t& path) override;
26 : void uninstallExtension(const Uri& uri) override;
27 :
28 : private:
29 : void doInstallExtension(const io::path_t& srcPath);
30 : };
31 : }
|