public override void SetScriptExtensionsConfiguration(IPluginMaster pluginMaster) { if (Root == null) { return; } try { var extensionsConfig = Root[MagicStringEnumerator.JSONCustomExtensions].Values <JToken>().ToArray(); foreach (var ext in extensionsConfig) { try { pluginMaster.AddScriptExtension((ext as JProperty).Name, ext.ToObject <string>()); } catch (ArgumentException ex) { Log.Instance?.Error(ex.Message); } } } catch (NullReferenceException) { Log.Instance?.Warn("custom_extensions is not found in the configuration file."); } }
private FileType GetPluginType(IPluginMaster pluginMaster) { foreach (var pair in pluginMaster.AcceptedFilesTypes) { if (pair.Value.Contains(Infos.FileExtension)) { return(pair.Key); } } return(FileType.Unknown); }
/// <summary> /// set all the custom interpreters /// </summary> /// <param name="pluginMaster">the plugin master wich will be configured</param> public abstract void SetInterpreterNameConfiguration(IPluginMaster pluginMaster);
/// <summary> /// add all the custom extensions that a script can be /// other plugin's type, like dll and so should not be modified to operate properly /// </summary> /// <param name="pluginMaster">the plugin master wich will be configured</param> public abstract void SetScriptExtensionsConfiguration(IPluginMaster pluginMaster);
public ThreadPoolPluginExecutor(IPluginMaster pluginMaster) { refPluginMaster = pluginMaster; }
public override void SetInterpreterNameConfiguration(IPluginMaster pluginMaster) { if (Root == null) { return; } var interpreterConfig = Root[MagicStringEnumerator.JSONIntepreter]; foreach (var fileType in pluginMaster.AcceptedFilesTypes[PluginFileInfos.FileType.Script]) { var key = fileType; var val = ""; try { // an intepreter can change depending the os val = interpreterConfig[OSAttribute.GetOSFamillyName()] ?.Value <string>(pluginMaster.ExtensionsNames[fileType]); } catch (NullReferenceException) { // if we cant find one we need to search in the environment variables var extensionName = pluginMaster.ExtensionsNames[fileType].ToUpper(); if (OSAttribute.IsWindows) { foreach (EnvironmentVariableTarget enumValue in Enum.GetValues( typeof(EnvironmentVariableTarget))) { val = Environment.GetEnvironmentVariable(extensionName, enumValue); if (val != null) { Log.Instance?.Info($"Environment variable found: {extensionName} : {val}"); break; } } } else if (OSAttribute.IsLinux) { using var dllimport = new DllImportLaunchCmdUnix(); val = dllimport.UseLaunchCommand($"printenv | grep {extensionName} | cut -d '=' -f 2").Trim(); if (!string.IsNullOrEmpty(val)) { Log.Instance?.Info($"Environment variable found: {extensionName} : {val}"); } } } // if it can't be found, the default one is choose if (string.IsNullOrEmpty(val)) { val = pluginMaster.ExtensionsNames[fileType]; } if (!File.Exists(val)) { return; } if (!pluginMaster.ExtensionsNames.ContainsKey(key)) { pluginMaster.AddScriptExtension(key, val); } else { pluginMaster.ExtensionsNames[key] = val; } } }
public SimplePluginManager(IPluginMaster pluginMaster) { Executor = new ThreadPoolPluginExecutor(pluginMaster); }
public ScheduledPluginManager(IPluginMaster pluginMaster) { Executor = new ThreadPoolPluginExecutor(pluginMaster); }
public BasePlugin(IPluginMaster pluginMaster, string path) : base(path) { Type = GetPluginType(pluginMaster); }