--basic option to disable advanced output (UpToolCLI)

This commit is contained in:
JFronny 2020-08-31 19:56:10 +02:00
parent c5de2e6886
commit b2d353b0bb
2 changed files with 61 additions and 39 deletions

View File

@ -1,5 +1,7 @@
using System; using System;
using System.CommandLine; using System.CommandLine;
using System.CommandLine.Invocation;
using System.Linq;
using UpToolLib; using UpToolLib;
using UpToolLib.Tool; using UpToolLib.Tool;
@ -17,6 +19,8 @@ namespace UpToolCLI
XmlTool.FixXml(); XmlTool.FixXml();
ExternalFunctionalityManager.Init(Functions); ExternalFunctionalityManager.Init(Functions);
RootCommand rootCommand = new RootCommand(); RootCommand rootCommand = new RootCommand();
rootCommand.AddGlobalOption(new Option<bool>("--basic"));
UtLibFunctions.Basic = args.Contains("--basic");
PackageManagement.RegisterCommands(rootCommand); PackageManagement.RegisterCommands(rootCommand);
CacheManagement.RegisterCommands(rootCommand); CacheManagement.RegisterCommands(rootCommand);

View File

@ -10,6 +10,7 @@ namespace UpToolCLI
{ {
public class UtLibFunctions : IExternalFunctionality public class UtLibFunctions : IExternalFunctionality
{ {
public static bool Basic;
public Tuple<bool, byte[]> Download(Uri link) public Tuple<bool, byte[]> Download(Uri link)
{ {
using WebClient client = new WebClient(); using WebClient client = new WebClient();
@ -25,9 +26,12 @@ namespace UpToolCLI
}; };
client.DownloadProgressChanged += (sender, e) => client.DownloadProgressChanged += (sender, e) =>
{ {
Console.Write( if (!Basic)
$"{new string('=', e.ProgressPercentage / 10)}[{e.ProgressPercentage}]{new string('-', 10 - e.ProgressPercentage / 10)}"); {
Console.CursorLeft = 0; Console.Write(
$"{new string('=', e.ProgressPercentage / 10)}[{e.ProgressPercentage}]{new string('-', 10 - e.ProgressPercentage / 10)}");
Console.CursorLeft = 0;
}
}; };
client.DownloadDataAsync(link); client.DownloadDataAsync(link);
while (!finished) while (!finished)
@ -47,48 +51,62 @@ namespace UpToolCLI
public bool YesNoDialog(string text, bool defaultVal) public bool YesNoDialog(string text, bool defaultVal)
{ {
bool choosing = true; if (Basic)
bool current = defaultVal;
Console.WriteLine(text);
while (choosing)
{ {
Console.CursorLeft = 0; Console.WriteLine(text);
Console.BackgroundColor = current ? ConsoleColor.White : ConsoleColor.Black; Console.WriteLine("Selecting \"Yes\"");
Console.ForegroundColor = current ? ConsoleColor.Black : ConsoleColor.White; return false;
Console.Write("Yes"); }
Console.ResetColor(); else
Console.Write(" "); {
Console.BackgroundColor = current ? ConsoleColor.Black : ConsoleColor.White; bool choosing = true;
Console.ForegroundColor = current ? ConsoleColor.White : ConsoleColor.Black; bool current = defaultVal;
Console.Write("No"); Console.WriteLine(text);
Console.ResetColor(); while (choosing)
switch (Console.ReadKey().Key) {
{ Console.CursorLeft = 0;
case ConsoleKey.LeftArrow: Console.BackgroundColor = current ? ConsoleColor.White : ConsoleColor.Black;
case ConsoleKey.RightArrow: Console.ForegroundColor = current ? ConsoleColor.Black : ConsoleColor.White;
current = !current; Console.Write("Yes");
break; Console.ResetColor();
case ConsoleKey.Enter: Console.Write(" ");
choosing = false; Console.BackgroundColor = current ? ConsoleColor.Black : ConsoleColor.White;
break; Console.ForegroundColor = current ? ConsoleColor.White : ConsoleColor.Black;
case ConsoleKey.Escape: Console.Write("No");
current = defaultVal; Console.ResetColor();
choosing = false; switch (Console.ReadKey().Key)
break; {
} case ConsoleKey.LeftArrow:
case ConsoleKey.RightArrow:
current = !current;
break;
case ConsoleKey.Enter:
choosing = false;
break;
case ConsoleKey.Escape:
current = defaultVal;
choosing = false;
break;
}
}
Console.ResetColor();
Console.WriteLine($" Selecting: {current}");
return current;
} }
Console.ResetColor();
Console.WriteLine($" Selecting: {current}");
return current;
} }
public void OkDialog(string text) public void OkDialog(string text)
{ {
Console.WriteLine(text); if (Basic)
Console.BackgroundColor = ConsoleColor.White; Console.WriteLine(text);
Console.Write("OK"); else
Console.ResetColor(); {
Console.ReadKey(); Console.WriteLine(text);
Console.BackgroundColor = ConsoleColor.White;
Console.Write("OK");
Console.ResetColor();
Console.ReadKey();
}
} }
public object GetDefaultIcon() => 0; public object GetDefaultIcon() => 0;