/// <summary> /// Installs the remote objects that the plugin requires on the server /// </summary> internal static void InstallRemoteLib(string library = "QGPL") { Thread thread = new Thread((ThreadStart) delegate { IBMiUtilities.DebugLog($"InstallRemoteLib -> {library}!"); try { List <string> sourceFiles = GenerateRemoteSource(); IBMi.RunCommands(IBMiCommandRender.RenderRemoteInstallScript(sourceFiles, library)); // Cleanup temp files foreach (string file in sourceFiles) { File.Delete(file); } IBMi.SetConfig("installlib", library); } catch (Exception e) { IBMiUtilities.Log(e.ToString()); // TODO: Show error? } IBMiUtilities.DebugLog("InstallRemoteLib - DONE!"); }); thread.Start(); }
/// <summary> /// TODO: ? /// </summary> internal static void RebuildRelic() { Thread gothread = new Thread((ThreadStart) delegate { IBMiUtilities.DebugLog("RebuildRelic!"); string tmpFile = Path.GetTempFileName(); IBMi.AddOutput("Starting build of '" + IBMi.GetConfig("relicdir") + "' into " + IBMi.GetConfig("reliclib")); if (Main.CommandWindow != null) { Main.CommandWindow.loadNewCommands(); } IBMi.RunCommands(IBMiCommandRender.RenderRelicRebuildScript(tmpFile)); IBMi.AddOutput(""); foreach (string line in File.ReadAllLines(tmpFile)) { IBMi.AddOutput($"> { line }"); } IBMi.AddOutput(""); IBMi.AddOutput("End of build."); File.Delete(tmpFile); if (Main.CommandWindow != null) { Main.CommandWindow.loadNewCommands(); } IBMiUtilities.DebugLog("RebuildRelic - DONE!"); }); gothread.Start(); }
/// <summary> /// Executes remote commands on the configured server to collect data on externally /// referenced tables that is then put into both memory and the file cache /// </summary> internal static void LaunchFFDCollection() { Thread thread = new Thread((ThreadStart) delegate { List <SourceLine> src = ParseCurrentFileForExtName(); if (src.Count == 0) { return; } // Generate temporary files to receive data string[] tmp = new string[src.Count]; for (int i = 0; i < src.Count; i++) { tmp[i] = Path.GetTempFileName(); } // Receive record formats via remote command IICDSPFFD IBMi.RunCommands(IBMiCommandRender.RenderFFDCollectionScript(src, tmp)); // Get all record formats to local temp files // Load Context & Cleanup temp files for (int i = 0; i < src.Count; i++) { try { RPGParser.LoadFFD(tmp[i], src[i]); } catch (Exception e) { IBMiUtilities.Log(e.ToString()); // TODO: Show error? } finally { File.Delete(tmp[i]); } } }); thread.Start(); }