public bool WriteScriptErrors() { foreach (var error in this.InstallScript.Errors) { var message = $"[{error.Level.ToString().ToLowerInvariant()}] {error.Message} (at line #{error.LineNumber})"; if (error.Level == ScriptErrorLevel.Warning) { RompConsoleMessenger.WriteDirect(message, ConsoleColor.Yellow); } else { RompConsoleMessenger.WriteDirect(message, ConsoleColor.Red); } } return(this.InstallScript.Errors.Any(e => e.Level == ScriptErrorLevel.Error)); }
public void WriteText(int level, TextWriter writer) { var text = new string(' ', level) + this.ToString(); if (writer == Console.Out) { RompConsoleMessenger.WriteDirect( text, this.Level == MessageLevel.Warning ? (ConsoleColor?)ConsoleColor.Yellow : this.Level == MessageLevel.Error ? (ConsoleColor?)ConsoleColor.Red : null ); } else { writer.WriteLine(text); } }
public void WriteErrors(TextWriter writer) { if (this.Level >= MessageLevel.Warning) { if (writer == Console.Out) { RompConsoleMessenger.WriteDirect( this.ToString(), this.Level == MessageLevel.Warning ? (ConsoleColor?)ConsoleColor.Yellow : this.Level == MessageLevel.Error ? (ConsoleColor?)ConsoleColor.Red : null ); } else { writer.WriteLine(this.ToString()); } } }
public void WriteText(int level, TextWriter writer) { var title = new string(' ', level) + "** " + AH.CoalesceString(this.Title, "(unnamed scope)") + " **"; if (writer == Console.Out) { RompConsoleMessenger.WriteDirect(title, ConsoleColor.White); } else { writer.WriteLine(title); } foreach (var node in this.nodes) { node.WriteText(level + 1, writer); } writer.WriteLine(); }
private static async Task RunPlanAsync(ScopedStatementBlock script, bool simulate) { if (simulate) { Console.WriteLine("Running as simulation"); } Console.WriteLine(); var executer = new RompExecutionEnvironment(script, simulate); if (!Console.IsOutputRedirected) { RompConsoleMessenger.ShowProgress = true; using (var done = new CancellationTokenSource()) { Task consoleTask = null; try { consoleTask = Task.Run(() => RompConsoleMessenger.MonitorStatus(executer, done.Token)); await executer.ExecuteAsync(); } finally { done.Cancel(); try { if (consoleTask != null) { await consoleTask; } } catch { } } } } else { RompConsoleMessenger.ShowProgress = false; await executer.ExecuteAsync(); } var exec = RompDb.GetExecutions() .FirstOrDefault(e => e.ExecutionId == executer.ExecutionId); if (exec != null) { var logs = RompDb.GetExecutionLogs(exec.ExecutionId); foreach (var log in logs) { log.WriteErrors(Console.Out); } if (exec.StatusCode == Domains.ExecutionStatus.Normal) { RompConsoleMessenger.WriteDirect($"Job #{executer.ExecutionId} completed successfully.", ConsoleColor.White); } else if (exec.StatusCode == Domains.ExecutionStatus.Warning) { RompConsoleMessenger.WriteDirect($"Job #{executer.ExecutionId} completed with warnings.", ConsoleColor.Yellow); } else { RompConsoleMessenger.WriteDirect($"Job #{executer.ExecutionId} encountered an error.", ConsoleColor.Red); throw new RompException("Job execution failed."); } Console.WriteLine(); } else { throw new RompException("Execution could not be created."); } }