diff options
author | vnugent <public@vaughnnugent.com> | 2023-06-12 19:15:50 -0400 |
---|---|---|
committer | vnugent <public@vaughnnugent.com> | 2023-06-12 19:15:50 -0400 |
commit | 043d378a157069c78863d2b9695de2884fb81ad1 (patch) | |
tree | 98faf976d05fdef54686f2d1aaca41d2ddf92bfa /lib/VNLib.Plugins.Extensions.Loading/src/ConfigurationExtensions.cs | |
parent | 728cb3000f5d5977dbb51c258f6cda3cdff63ceb (diff) |
Auto type init, async/lazy loading
Diffstat (limited to 'lib/VNLib.Plugins.Extensions.Loading/src/ConfigurationExtensions.cs')
-rw-r--r-- | lib/VNLib.Plugins.Extensions.Loading/src/ConfigurationExtensions.cs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/VNLib.Plugins.Extensions.Loading/src/ConfigurationExtensions.cs b/lib/VNLib.Plugins.Extensions.Loading/src/ConfigurationExtensions.cs index 190c153..fbe8d48 100644 --- a/lib/VNLib.Plugins.Extensions.Loading/src/ConfigurationExtensions.cs +++ b/lib/VNLib.Plugins.Extensions.Loading/src/ConfigurationExtensions.cs @@ -23,11 +23,14 @@ */ using System; +using System.IO; using System.Text.Json; using System.Reflection; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using VNLib.Utils.Extensions; + namespace VNLib.Plugins.Extensions.Loading { /// <summary> @@ -66,6 +69,9 @@ namespace VNLib.Plugins.Extensions.Loading { public const string S3_CONFIG = "s3_config"; public const string S3_SECRET_KEY = "s3_secret"; + public const string PLUGIN_ASSET_KEY = "assets"; + public const string PLUGINS_HOST_KEY = "plugins"; + public const string PLUGIN_PATH_KEY = "path"; /// <summary> /// Retrieves a top level configuration dictionary of elements for the specified type. @@ -356,5 +362,39 @@ namespace VNLib.Plugins.Extensions.Loading IConfigScope? s3conf = plugin.TryGetConfig(S3_CONFIG); return s3conf?.Deserialze<S3Config>(); } + + /// <summary> + /// Trys to get the optional assets directory from the plugin configuration + /// </summary> + /// <param name="plugin"></param> + /// <returns>The absolute path to the assets directory if defined, null otherwise</returns> + public static string? GetAssetsPath(this PluginBase plugin) + { + //Get global plugin config element + IConfigScope config = plugin.GetConfig(PLUGINS_HOST_KEY); + + //Try to get the assets path if its defined + string? assetsPath = config.GetPropString(PLUGIN_ASSET_KEY); + + //Try to get the full path for the assets if we can + return assetsPath != null ? Path.GetFullPath(assetsPath) : null; + } + + /// <summary> + /// Gets the absolute path to the plugins directory as defined in the host configuration + /// </summary> + /// <param name="plugin"></param> + /// <returns>The absolute path to the directory containing all plugins</returns> + public static string GetPluginsPath(this PluginBase plugin) + { + //Get global plugin config element + IConfigScope config = plugin.GetConfig(PLUGINS_HOST_KEY); + + //Get the plugins path or throw because it should ALWAYS be defined if this method is called + string pluginsPath = config[PLUGIN_PATH_KEY].GetString()!; + + //Get absolute path + return Path.GetFullPath(pluginsPath); + } } } |