diff --git a/DTLib.Dtsod/DTLib.Dtsod.csproj b/DTLib.Dtsod/DTLib.Dtsod.csproj index a7c8734..e6ddb2c 100644 --- a/DTLib.Dtsod/DTLib.Dtsod.csproj +++ b/DTLib.Dtsod/DTLib.Dtsod.csproj @@ -2,7 +2,7 @@ DTLib.Dtsod - 1.0.3 + 1.0.4 Timerix Definitely not json GIT @@ -33,7 +33,7 @@ - + diff --git a/DTLib.Logging/DTLib.Logging.csproj b/DTLib.Logging/DTLib.Logging.csproj index 6ff1c66..e1579c9 100644 --- a/DTLib.Logging/DTLib.Logging.csproj +++ b/DTLib.Logging/DTLib.Logging.csproj @@ -2,7 +2,7 @@ DTLib.Logging - 1.0.7 + 1.0.8 Timerix Loggers with dependency injection GIT @@ -30,7 +30,7 @@ - + diff --git a/DTLib.Network/DTLib.Network.csproj b/DTLib.Network/DTLib.Network.csproj index 1642e7c..96749b3 100644 --- a/DTLib.Network/DTLib.Network.csproj +++ b/DTLib.Network/DTLib.Network.csproj @@ -2,7 +2,7 @@ DTLib.Network - 1.0.3 + 1.0.4 Timerix Some sick network protocols GIT @@ -32,6 +32,6 @@ - + diff --git a/DTLib.Tests/DTLib.Tests.csproj b/DTLib.Tests/DTLib.Tests.csproj index 2a6f9b5..3b2c8ac 100644 --- a/DTLib.Tests/DTLib.Tests.csproj +++ b/DTLib.Tests/DTLib.Tests.csproj @@ -27,8 +27,10 @@ - - + + + + diff --git a/DTLib.Tests/Program.cs b/DTLib.Tests/Program.cs index 7630c69..d058ea8 100644 --- a/DTLib.Tests/Program.cs +++ b/DTLib.Tests/Program.cs @@ -10,6 +10,7 @@ global using DTLib.Filesystem; global using DTLib.Dtsod; global using static DTLib.Tests.TesterLog; global using static DTLib.Tests.Program; +using DTLib.Console; using DTLib.Logging.New; namespace DTLib.Tests; @@ -18,7 +19,7 @@ public static class Program { public static Logging.ConsoleLogger OldLogger = new("logs", "DTLib.Tests"); public static ILogger Logger; - public static void Main() + public static void Main(string[] args) { System.Console.OutputEncoding = Encoding.UTF8; System.Console.InputEncoding = Encoding.UTF8; @@ -29,11 +30,14 @@ public static class Program try { + new LaunchArgumentParser().WithNoExit().ParseAndHandle(args); TestPInvoke.TestAll(); TestAutoarr.TestAll(); TestDtsodV23.TestAll(); TestDtsodV24.TestAll(); } + catch(LaunchArgumentParser.ExitAfterHelpException) + { } catch (Exception ex) { mainContext.LogError(ex); } diff --git a/DTLib/Console/LaunchArgumentParser.cs b/DTLib/Console/LaunchArgumentParser.cs index 3240469..09ef953 100644 --- a/DTLib/Console/LaunchArgumentParser.cs +++ b/DTLib/Console/LaunchArgumentParser.cs @@ -23,7 +23,7 @@ public class LaunchArgumentParser public string CreateHelpArgMessage(string argAlias) { StringBuilder b = new(); - var arg = Get(argAlias); + var arg = Parse(argAlias); arg.AppendHelpInfo(b); return b.ToString(); } @@ -51,6 +51,12 @@ public class LaunchArgumentParser Add(helpArg); } + public LaunchArgumentParser WithNoExit() + { + ExitIfNoArgs = false; + return this; + } + public LaunchArgumentParser(ICollection arguments) : this() { foreach (var arg in arguments) @@ -69,7 +75,7 @@ public class LaunchArgumentParser argDict.Add(arg.Aliases[a], arg); } - public LaunchArgument Get(string argAlias) + public LaunchArgument Parse(string argAlias) { // different argument providing patterns if (!argDict.TryGetValue(argAlias, out var arg) && // arg @@ -90,10 +96,12 @@ public class LaunchArgumentParser // show help and throw if (args.Length == 0 && ExitIfNoArgs) HelpHandler(); + + List execQueue = new(); for (int i = 0; i < args.Length; i++) { - LaunchArgument arg = Get(args[i]); + LaunchArgument arg = Parse(args[i]); if (arg.HandlerWithArg is not null) { @@ -103,14 +111,14 @@ public class LaunchArgumentParser arg.Handler = () => arg.HandlerWithArg(args[i]); } else if (arg.Handler is null) throw new NullReferenceException($"argument <{args[i]}> hasn't got any handlers"); + + execQueue.Add(arg); } // ascending sort by priority - argList.Sort((a0, a1) => a0.Priority-a1.Priority); + execQueue.Sort((a0, a1) => a0.Priority-a1.Priority); // finally executing handlers - foreach (var a in argList) - { + foreach (var a in execQueue) a.Handler!(); - } } } \ No newline at end of file diff --git a/DTLib/DTLib.csproj b/DTLib/DTLib.csproj index 595e31b..48b76c8 100644 --- a/DTLib/DTLib.csproj +++ b/DTLib/DTLib.csproj @@ -2,7 +2,7 @@ DTLib - 1.0.3 + 1.0.4 Timerix Library for all my C# projects GIT diff --git a/DTLib/Experimental/CompressedArray.cs b/DTLib/Experimental/CompressedArray.cs index 1385df9..9bcda49 100644 --- a/DTLib/Experimental/CompressedArray.cs +++ b/DTLib/Experimental/CompressedArray.cs @@ -1,4 +1,5 @@ using System.Threading; +using DTLib.Console; namespace DTLib.Experimental { diff --git a/pack.sh b/pack.sh index c506ed4..89a8927 100644 --- a/pack.sh +++ b/pack.sh @@ -1,7 +1,7 @@ #!/usr/bin/bash set -ex +dotnet pack -c Release -o ./nuget_new/ +rm ./nuget_new/DTLib.Tests.* rm -rf nuget -mkdir nuget -dotnet pack -c Release -o ./nuget/ -rm ./nuget/DTLib.Tests.* +mv nuget_new nuget ls nuget