/// <summary> /// Executes the command console script. <see cref="aceConsoleScript"/> /// </summary> /// <param name="script">The console script to execute</param> /// <param name="delay">The delay between two instructions in the script, in miliseconds</param> public aceConsoleScript executeScript(IAceConsoleScript script, Int32 delay = 10) { aceConsoleScript parent = scriptRunning as aceConsoleScript; scriptRunning = script as aceConsoleScript; scriptRunning.Execute(this, parent, delay); return(scriptRunning); }
/// <summary> /// Executes the specified console. /// </summary> /// <param name="console">The console.</param> /// <param name="__parent">The parent.</param> /// <param name="delay">The delay.</param> /// <param name="skipLines">Number of lines to skip</param> public void Execute(aceCommandConsole console, aceConsoleScript __parent, Int32 delay = 1, Int32 skipLines = -1) { parent = __parent; executionStart = DateTime.Now; currentLine = 0; foreach (String line in this) { if (currentLine > skipLines) { if (line.isNullOrEmptyString() || line == Environment.NewLine) { // skipping empty line } else { if (scriptExecutionAborted) { scriptExecutionAborted = false; break; } switch (imbACECoreConfig.settings.doShowScriptLines) { case scriptLineShowMode.none: break; case scriptLineShowMode.undefined: break; case scriptLineShowMode.onlyCodeLine: console.output.AppendLine(line); break; case scriptLineShowMode.fullPrefixAndCodeLine: console.output.log("Script [" + currentLine.ToString("D3") + "]: " + line); break; case scriptLineShowMode.codeNumberAndCodeLine: console.output.AppendLine("[" + currentLine.ToString("D3") + "] _" + line + "_"); break; } console.executeCommand(line); Thread.Sleep(delay); } } currentLine++; } executionFinish = DateTime.Now; }
/// <summary> /// Creates another instance of script, using this as template /// </summary> /// <param name="pars">The pars.</param> public aceConsoleScript DeployTemplate(string[] pars, String newScriptName = "") { String newPath = ""; if (newScriptName.isNullOrEmpty()) { String filename = info.Name.removeEndsWith(".ace"); FileInfo newFileInfo = filename.getWritableFile(getWritableFileMode.autoRenameThis); newPath = newFileInfo.FullName; } else { newPath = info.Directory.FullName.add(newScriptName.ensureEndsWith(".ace")); } aceConsoleScript output = new aceConsoleScript(newPath, false); String scriptCode = ""; foreach (String line in this) { scriptCode = scriptCode + line + Environment.NewLine; } try { scriptCode = String.Format(scriptCode, pars); } catch (Exception ex) { aceLog.log(ex.Message, null, true); output.isReady = false; } //List<String> scriptLines = new List<string>(); //scriptLines.AddRange(); foreach (String line in scriptCode.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)) { output.Append(line, false); } return(output); }
/// <summary> /// Gets the script in another <see cref="commandLineFormat"/> /// </summary> /// <param name="console">The console.</param> /// <param name="format">The format.</param> /// <param name="newPath">The new path.</param> /// <returns></returns> public aceConsoleScript GetScriptInForm(IAceCommandConsole console, commandLineFormat format, String newPath = null) { String p = newPath; if (p.isNullOrEmpty()) { p = path; } //if (File.Exists(p)) aceConsoleScript output = new aceConsoleScript(p, false); foreach (String st in this) { aceCommandEntry entry = new aceCommandEntry(console, st); try { if (!entry.isSyntaxError) { output.Append(entry.GetScriptLine(format)); } else { output.Append(commandLineEntry.commentPrefix + " line: " + entry.inputLine + " - error: " + entry.errorMessage); } } catch (Exception ex) { output.Append("// error in line transformation: " + entry.inputLine); output.Append("// " + ex.toStringSafe()); output.Append("// " + ex.Message); } } if (!newPath.isNullOrEmpty()) { output.SaveAs(newPath, getWritableFileMode.overwrite, console.output); } return(output); }
/// <summary>Uses template script file to dynamically create customized execution script</summary> /// <remarks><para>It loads specified template script file and applies provided parameters to the {n} template placeholders</para></remarks> /// <param name="templateName">Name of template file</param> /// <param name="parameters">Comma separated values for parameters</param> /// <param name="saveScript">true</param> /// <seealso cref="aceOperationSetExecutorBase"/> public void aceOperation_scriptTemplate( [Description("Name of template file")] String templateName = "word", [Description("Comma separated values for parameters")] String parameters = "2,SM-LSD,1,preloadLexicon", [Description("true")] Boolean saveScript = true) { String[] pars = parameters.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); aceConsoleScript script = workspace.loadScript(templateName); aceConsoleScript scriptInstance = script.DeployTemplate(pars); if (saveScript) { scriptInstance.Save(); } if (scriptInstance.isReady) { executeScript(scriptInstance); } else { output.log("Script instance [" + scriptInstance.info.Name + "] creation from template script [" + script.info.Name + "] failed to construct. Check number of parameters!"); } }