Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit de86a008 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

vectoconsole: show progress

parent dfa95f59
No related branches found
No related tags found
No related merge requests found
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.Remoting.Channels;
using System.Threading;
using NLog;
using NLog.Config;
using TUGraz.VectoCore.Configuration;
......@@ -12,6 +15,9 @@ namespace VectoConsole
{
internal static class Program
{
private static int NumLines;
private static int ProgessCounter { get; set; }
private const string USAGE = @"Usage: vecto.exe [-h] [-v] FILE1.vecto [FILE2.vecto ...]";
private const string HELP = @"
......@@ -66,12 +72,29 @@ Examples:
var sumWriter = new SummaryFileWriter(sumFileName);
var jobContainer = new JobContainer(sumWriter);
Console.WriteLine("Reading Job Files");
foreach (var file in fileList.Where(f => Path.GetExtension(f) == Constants.FileExtensions.VectoJobFile)) {
var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineeringMode, file);
var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.DeclarationMode, file);
jobContainer.AddRuns(runsFactory);
}
Console.WriteLine("Starting simulation runs");
jobContainer.Execute();
Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => {
var isCtrlC = e.SpecialKey == ConsoleSpecialKey.ControlC;
var isCtrlBreak = e.SpecialKey == ConsoleSpecialKey.ControlBreak;
if (isCtrlC) {
Console.WriteLine("Canceling simulation!");
}
};
//var x = Console.CursorLeft;
while (!jobContainer.AllCompleted) {
PrintProgress(jobContainer.GetProgress());
Thread.Sleep(250);
}
} catch (Exception e) {
Console.Error.WriteLine(e.Message);
Trace.TraceError(e.ToString());
......@@ -79,5 +102,22 @@ Examples:
}
return Environment.ExitCode;
}
private static void PrintProgress(Dictionary<string, double> progessData)
{
Console.SetCursorPosition(0, Console.CursorTop - NumLines);
NumLines = 0;
var sumProgress = 0.0;
foreach (var progress in progessData) {
Console.WriteLine(string.Format("{0,-60} {1,8:P}", progress.Key, progress.Value));
sumProgress += progress.Value;
NumLines++;
}
sumProgress /= NumLines;
var spinner = "/-\\|"[ProgessCounter++ % 4];
var bar = new string('#', (int)(sumProgress * 100.0 / 2));
Console.WriteLine(string.Format(" {2} [{1,-50}] [{0,6:P}]", sumProgress, bar, spinner));
NumLines++;
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment