* small fixes and suggestions to make docs more clear
* Add note instead of code sample
---------
Co-authored-by: Karthik Sesham <t-ksesham@microsoft.com>
Co-authored-by: Karthik Sesham <98133619+karthik-sesham@users.noreply.github.com>
* Add Plugin Metadata (#228)
* Add plugin manager core project
* Add packaging metadata and test
* Add target platforms and update supported data sources
* Clean up
* Clean up doc strings
* More clean ups
* Update .editorconfig
* Update namespace
* Add authors
* Seal
* Update test code
* Remove .editorconfig
* Remove camel case
* Remove architecture and add IsMetadatatTable
* Address comments
* Remove group and upate test
* Add data cookers and extensible tables
* Add glossary.md
* Plugin Discovery (#229)
* Add plugin discovery APIs
* Update discovery and add downloader
* Add nuget implementation
* Clean up
* Update plugins manager to handle generic
* Clean up
* Change PluginInfo to a class and remove downloader interface
* Refactor discoverey orchestration
* Add doc strings and clean up
* Add new line
* Fix name and constructer
* Add glossary.md
* Add diagram
* Add alternative design
* Remove PluginInfo, update AvailablePlugin and InstalledPlugin
* Remove fetcher factory
* Add docstrings and clean up
* Add more docstrings
* Update solution file
* Remove documentation
* Added nuget implementations for new design
* Add NuGetPluginDiscoverer creation
* Update IsSupported to async
* Add TODOs
* Added todo
* Remove initial design
* Update namespaces
* Update folder names
* Copyrights
* Add resource guid to identify resource from an AvailablePlugin (#253)
* Add resource guid to identify resource from an AvailablePlugin
* Remove .editorconfig
* Refactor AvailablePlugin
* Fix NuGet discoverer provider
* Handle duplicates differently and addressed pr comments
* Not throw exceptions when there are duplicates
* Rename resource repository
* Fix results union bug
* Fix constructor para names (#260)
* Plugins Installation (#239)
* Update metadata docstrings and add processing source guid in data cooker metadata
* Checkpoint
* Add installation APIs
* Add lock file apis
* Add supports for getting installed plugin metadata
* Implements lock
* Add progress to package extraction
* Implements verify installed
* Checks for installation and refactor synchronized object
* Add hash method
* Add hash in InstalledPlugin
* Add obsolete plugin files clean up
* Remove tests csproj
* Add TODO
* Move InstalledPlugin to Installation
* Add plugin package docstrings
* Tag todos with issue
* Address comment
* Update installer to use new AvailablePlugin
* Fix name
* Add awaits
* Address checksum comments
* Get rid of update plugin
* Deserialize metadata on getting installed plugins
* Clean ups
* Downgrade system.text.json to 7.0.0 (#261)
* Update project names (#262)
* Update project names and dirs
* Update namespaces
* Fix one namespace in runtime
* Do not read PluginMetadata json stream multiple times. (#264)
* Do not read PluginMetadata json stream multiple times.
* Use JsonSerializer.DeserializeAsync instead of document
* Remove unused variable
* Add runtime project (#265)
* Add runtime
* Add folders
* Add tests projects
* Remove global usings
* Fix path
* Override GetHashCode and fix docstrings (#266)
* Add support for plugins manager resources reflection and loading (#267)
* Add logger in PluginsManager
* Add plugin manager resource reference class
* Add resource loader implementation with refactorings
* Plugins Manager Error Handling and Logging (#268)
* Remove public setters in plugin metadata
* Move PluginPackage to runtime and add serilazation class
* Remove unused parameter
* Add logger params
* Move serialization to core
* Add error handling in plugin registry
* Change LoadaAdditionalPluginResources return type
* Add more error handling in PluginRegistry
* Error handlings in PluginInstaller
* Add more custom exceptions for installation
* Update return type of get all installed plugins to a result class
* Add set loggers
* Clean up
* Plugin fetcher exception
* Disable loading additional resources for now
* Add error handlings for discovering APIs
* Add error handlings for adding plugin sources
* Update PluginsPackage
* Update PluginsManager
* Update exception types
* Add doctrings in plugin registry
* Add docstrings in PluginInstaller
* More docstrings
* Address PR comments
* Update docstrings to use fine-grained exeception types
* Update to use SetLogger instead of passing as parameter
* Add error notifying events for plugin source
* Update InstalledPluginResult
* Only catch Json and IO execeptions
* Add remarks
* Update to use ErrorInfo for plugin source error event args
* Address comments
* Update to use FileDistributedLock for plugin registry locking (#269)
* Update to use FileDistributedLock for plugin registry locking
* Fix doc string
* Clean up plugin registry class
* Add cancellations in plugin registry (#270)
* Add cancellation in plugin registry
* Remove progress from uninstallation
* Remove progress from uninstallation
* Rename PluginManagerResource to PluginsManagerResource
* Change parameter name from source to pluginSource
* Remove nuget
* Remove credentials from core
* Add IPluginRegistry and ISynchronizedObject
* Remove nuget from solution file
* Update discovery helper classes to internal types
* Clean up and fix white spaces
* Remove unnecessary stuff in discovery runtime
* SAdd async in method name
* Fix typo
* Make PluginSource an IEquatable
* Make AvailablePluginInfo equatable
* Fix AddPluginSources
* Add async in method names
* Update MD5 to SHA256
* Add comment
* Add TODO in reflector
* Add issue in TODOs
* Formatting
* Remove tests (will be in another PR)
* Minor refactor of plugins manager (#272)
* Remove usings
* Add ISerializer
* Add IRepository
* Update exceptions types
* Update serialization utils
* Fix docstrings
* Add IPluginInstaller
* Update PluginsManager
* Update PluginPackage
* Address feedback - use type param
* TId to TIdentifier
* Move all changes to be under Toolkit.Plugins (#273)
* Create ProcessingSourceInfo for plugins manager
* Move plugins manager errorcodes to its own class
* Move hashutils to plugins.core
* Move PluginsManagerResourceRerference to Plugins.Runtime
* Fix metadata null reference (#277)
* Remove installer APIs from IPluginsManager (#279)
* Remove installer APIs from plugins manager and just make it a facade of IPluginsInstaller
* Change installer class name
* Docstrings
* Update CI pipeline to build feature/pluginManager
* Refactor IPluginsManager to a composition-based PluginsSystem (#280)
* Set installation root dir as a property in the installer
* Remove installtionDir from pluginsManager
* wip
* Remove DiscovererSourcesManager
* Move all discovery to new class
* Refactor out discovery and fetching from plugins manager
* Comment out fetching logic in AvailablePlugin
* Fix typo
* Revert fetching part
* Interface name change IKeyedRepository
* Add PluginsSystem
* Remove installPath from InstalledPluginInfo
* Remove IPuginsManager and use PluginSystem
* Synchronize plugin discoverer
* Update construtors
* Remove plugin sources from IPluginsDisoverer
* Add a loader interface for resources that cobimes reflected resources and directly added resources
* Plugins System cleanup (#283)
* Rename to PluginsSystem in Core
* Rename in Exceptions
* Clean up discovery
* Update resources management
* Remove manager folder
* Clean up installation and registry
* Change folder name
* Fix project reference
* Update version files so that PluginsSystem will be on its own version (#285)
* Exclude PluginsSystem from bumping main version and and a new version file for plugins
* Update plugins version to 0.1-preview
* Add unit tests for PluginSourceRepository (#284)
* Add unit tests for PluginSourceRepository
* Add return values in IRepository APIs
* Update tests by combining test cases and using dynamic data
* Add null checks in plugin source repo apis
* Address feedback
* Refactor PluginPackage (#286)
* Refactor PluginPackage
* Move package types to package folder and add PluginPackageEntry
* Remove extract method from plugin package
* Cleans up
* Add storage and fix build errors
* Remove PluginIdentity from metadata
* Fix content folder check bug
* Add unit tests
* Fix namespace and styles
* Refactor plugin installer (#288)
* Add locator
* Update validator to use locator
* Add checksum calculator
* Decoupled storage from installer
* Add plugin loader
* PR comment
* Metadata Equality (#289)
* Add equals and gethashcode override
* Add null checks and equals override in AvailablePluginInfo
* Add equals override in PluginSource
* Remove empty line
* Update PluginMetadata
* Fix typo
* Use existing plugin identity instead of creating new
* Clean up
* Fix InstalledPluginInfo Id and Version
* Add unit tests for FileSystemInstalledPluginStorage (#290)
* Add FileSystemInstalledPluginStorage tests
* More tests for AddAsync
* Add more test cases
* More
* Add plugin registry tests (#291)
* Add plugin registry tests
* Add more tests
* Clean ups (#292)
* Clean up
* Fix doc
* Exclude plugins tests from version.json
* Revert ci.yml
* Fix bugs in package installation
* Return collection instead of dictionary in IPluginDiscoverer
* Remove redundant parts in property names
* Add an abstract thread safe repository impl
* Add cref
* Fix doc
* Add TODOs
* Remove white space in plugin identity ToString()
* Move package abstraction to core
* Address PR comments
---------
Co-authored-by: Luke Bordonaro <lukebo@microsoft.com>
EngineCreateInfo takes a ReadOnlyDataSourceSet, but the docs were passing in a DataSourceSet, and there is no implicit conversion
Co-authored-by: Luke Bordonaro <lukebo@microsoft.com>
* Refactor ProcessingSource to use a table discovery interface.
This adds ITableProvider to give users an easier way to provide the
tables for their Processing Sources. The default behavior of finding
all tables in the Processing Source's assembly is preserved.
* Update migration doc.
* Fix typo.
* Simplify TableDescriptor boilerplate.
* Update doc comment.
* Move TableDiscovery to its own file.
* Move DiscoveredTable to its own file.
* Add helper methods based on PR feedback.
* Update doc comments.
* Remove obsolete constructor.
* Refactor test data source.
* Address PR comments about DiscoveredTable comparison.
* Address PR comments.
* Address PR comments.
* Address PR comments.
* Add missing unit test.
Separates enabling cookers from adding data sources. This enables users to know if the cooker they enabled potentially has data. This also has the benefit of allowing reuse of plugins and data sources across engine instances.
Co-authored-by: Jayson Maxson <jmaxson@ntdev.microsoft.com>
Co-authored-by: Zack Newman <zachnew@ntdev.microsoft.com>
* Create class/interface definitions for new names and obsolete old ones
* WIP rename other stuff
* more comments. Remove old classes
* Update docs
* Re-add old class names
* Fix migration docs
* Update about info docs
* Address PR comments
* Update ProcessingSourceExecutor docstring
* Update docs from PR comments
* Testing changes to cooker paths
* Fix broken tests
* Restore old API and mark as Obsolete
* Fix unintended public -> internal changes
* Update migraiton doc