// We search the plug in for all files it can edit if this plugin implemented capability of text editor // public List<PlugInTextFileEditorBase> TextEditors() // { // List<PlugInTextFileEditorBase> list = new List<PlugInTextFileEditorBase>(); // //TODO:: Need to be handled once PACT implementation is done // //foreach (PlugInCapability c in PlugIn.Capabilities()) // //{ // // if (c is PlugInTextFileEditorBase) // // { // // list.Add((PlugInTextFileEditorBase)c); // // } // //} // return list; // } // public List<string> GetExtentionsByEditorID(string plugInEditorID) // { // foreach (PlugInTextFileEditorBase PITFEB in TextEditors()) // { // if (PITFEB.EditorID == plugInEditorID) // { // return PITFEB.Extensions; // } // } // return null; // } // public PlugInTextFileEditorBase GetPlugInTextFileEditorBaseByEditorID(string plugInEditorID) // { // foreach (PlugInTextFileEditorBase PITFEB in TextEditors()) // { // if (PITFEB.EditorID == plugInEditorID) // { // return PITFEB; // } // } // return null; // } // public string GetTemplateContentByEditorID(string plugInEditorID, string plugInExtension) // { // foreach (PlugInTextFileEditorBase PITFEB in TextEditors()) // { // if (PITFEB.EditorID == plugInEditorID) // { // return PITFEB.GetTemplatesByExtensions("." + plugInExtension); // } // } // return null; // } public void StartService(string PluginId) { if (string.IsNullOrEmpty(PluginId)) { throw new Exception("Plugin action missing PluginId"); } PluginPackage pluginPackage = (from x in mPluginPackages where x.PluginID == PluginId select x).SingleOrDefault(); if (pluginPackage == null) { throw new Exception("PluginPackage not found in solution PluginId=" + PluginId); } if (string.IsNullOrEmpty(pluginPackage.StartupDLL)) { throw new Exception("PluginPackage StartupDLL is missing in the Ginger.PluginPackage.json" + PluginId); } string dll = Path.Combine(pluginPackage.Folder, pluginPackage.StartupDLL); string nodeFileName = NodeConfigFile.CreateNodeConfigFile(PluginId + "1"); // TODO: check if 1 exist then try 2,3 in case more than one same id service start string cmd = "dotnet " + dll + " " + nodeFileName; System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + cmd); procStartInfo.UseShellExecute = true; System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo = procStartInfo; proc.Start(); //TODO: delete the temp file - or create temp files tracker with auto delete }
// We search the plug in for all files it can edit if this plugin implemented capability of text editor // public List<PlugInTextFileEditorBase> TextEditors() // { // List<PlugInTextFileEditorBase> list = new List<PlugInTextFileEditorBase>(); // //TODO:: Need to be handled once PACT implementation is done // //foreach (PlugInCapability c in PlugIn.Capabilities()) // //{ // // if (c is PlugInTextFileEditorBase) // // { // // list.Add((PlugInTextFileEditorBase)c); // // } // //} // return list; // } // public List<string> GetExtentionsByEditorID(string plugInEditorID) // { // foreach (PlugInTextFileEditorBase PITFEB in TextEditors()) // { // if (PITFEB.EditorID == plugInEditorID) // { // return PITFEB.Extensions; // } // } // return null; // } // public PlugInTextFileEditorBase GetPlugInTextFileEditorBaseByEditorID(string plugInEditorID) // { // foreach (PlugInTextFileEditorBase PITFEB in TextEditors()) // { // if (PITFEB.EditorID == plugInEditorID) // { // return PITFEB; // } // } // return null; // } // public string GetTemplateContentByEditorID(string plugInEditorID, string plugInExtension) // { // foreach (PlugInTextFileEditorBase PITFEB in TextEditors()) // { // if (PITFEB.EditorID == plugInEditorID) // { // return PITFEB.GetTemplatesByExtensions("." + plugInExtension); // } // } // return null; // } public System.Diagnostics.Process StartService(string pluginId, string serviceID) { if (string.IsNullOrEmpty(pluginId)) { throw new ArgumentNullException(nameof(pluginId)); } PluginPackage pluginPackage = (from x in mPluginPackages where x.PluginId == pluginId select x).SingleOrDefault(); // TODO: only once !!!!!!!!!!!!!!!!!!!!!!!!! temp pluginPackage.LoadServicesFromJSON(); if (pluginPackage == null) { throw new Exception("PluginPackage not found in solution PluginId=" + pluginId); } if (string.IsNullOrEmpty(pluginPackage.StartupDLL)) { throw new Exception("StartupDLL is missing in the Ginger.PluginPackage.json for: " + pluginId); } string dll = Path.Combine(pluginPackage.Folder, pluginPackage.StartupDLL); string nodeFileName = NodeConfigFile.CreateNodeConfigFile(pluginId + "1", serviceID); // TODO: check if 1 exist then try 2,3 in case more than one same id service start string cmd = "dotnet \"" + dll + "\" \"" + nodeFileName + "\""; System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + cmd); procStartInfo.UseShellExecute = true; // TODO: Make it config not to show the console window // procStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo = procStartInfo; proc.Start(); mProcesses.Add(new PluginProcessWrapper(pluginId, serviceID, proc)); return(proc); //TODO: delete the temp file - or create temp files tracker with auto delete }
public void StartGingerNode(string configFileName) { NodeConfigFile nodeConfigFile = new NodeConfigFile(configFileName); StartGingerNode(nodeConfigFile.Name, nodeConfigFile.GingerGridHost, nodeConfigFile.GingerGridPort); }