using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.MachineStudio.Common.Publish; namespace Tango.MachineStudio.Publisher.CLI { class Program { private static bool single = false; static void Main(string[] args) { PublisherOptions options = new PublisherOptions(); try { if (!PublisherOptions.Parse(options, args)) { Console.WriteLine(options.GetUsage()); PauseIfDebug(); return; } } catch (Exception ex) { Console.WriteLine(ex.Message); PauseIfDebug(); } if (options.InfoOptions != null) { MachineStudioPublisher p = new MachineStudioPublisher(); String ver = p.GetRemoteVersion(options.InfoOptions.Environment).Result; Console.WriteLine($"Remote Version on {options.InfoOptions.Environment.ToDescription()}: {ver}"); PauseIfDebug(); return; } if (options.PublishOptions == null) { Console.WriteLine("No command specified."); Environment.Exit(-1); return; } MachineStudioPublisher publisher = new MachineStudioPublisher(options.PublishOptions); publisher.PublishProgress += Publisher_PublishProgress; try { publisher.Publish().Wait(); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.FlattenMessage()); PauseIfDebug(); Environment.Exit(-1); } PauseIfDebug(); } private static void Publisher_PublishProgress(object sender, PublishProgressEventArgs e) { if (e.SingleLineRecommended) { ClearCurrentConsoleLine(); Console.Write(e.Message + " "); single = true; } else { if (single) { Console.WriteLine(); single = false; } Console.WriteLine(e.Message); } } public static void ClearCurrentConsoleLine() { int currentLineCursor = Console.CursorTop; Console.SetCursorPosition(0, Console.CursorTop); } private static void PauseIfDebug() { if (System.Diagnostics.Debugger.IsAttached) Console.ReadLine(); } } }