From 511f1eb9390ea2ccd5424accd5f2d3c369ce5ccf Mon Sep 17 00:00:00 2001
From: Harald Martini <harald.martini@student.tugraz.at>
Date: Tue, 30 Aug 2022 12:14:14 +0200
Subject: [PATCH] removed possibility to select .net version via command line,
 pass commandline arguments to launched console application

---
 Tools/HashingCmdStart/Program.cs   |  5 +++-
 Tools/HashingToolStart/Program.cs  |  2 +-
 Tools/VECTOConsoleStart/Program.cs |  5 +++-
 Tools/VECTOStart/StarterHelper.cs  | 41 +++++++++++++++++++++++-------
 4 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/Tools/HashingCmdStart/Program.cs b/Tools/HashingCmdStart/Program.cs
index f3b287ab1d..d6ddc78a1e 100644
--- a/Tools/HashingCmdStart/Program.cs
+++ b/Tools/HashingCmdStart/Program.cs
@@ -2,6 +2,9 @@
 {
 	class Program
 	{
-		static void Main(string[] args) => StarterHelper.StartVECTO(args);
+		static void Main(string[] args)
+		{
+			StarterHelper.StartVECTO(args, true);
+        } 
 	}
 }
\ No newline at end of file
diff --git a/Tools/HashingToolStart/Program.cs b/Tools/HashingToolStart/Program.cs
index 6d55a719f7..212d779550 100644
--- a/Tools/HashingToolStart/Program.cs
+++ b/Tools/HashingToolStart/Program.cs
@@ -9,7 +9,7 @@ namespace TUGraz.VECTO
 		{
 			try {
 				// mk20220707: hashing tool currently only works under net45, therefore we hardcoded the version
-				StarterHelper.StartVECTO(new[]{"net45"});
+				StarterHelper.StartVECTO(args);
 			} catch (Exception e) {
 				MessageBox.Show(e.Message);
 			}
diff --git a/Tools/VECTOConsoleStart/Program.cs b/Tools/VECTOConsoleStart/Program.cs
index f5dbc4cdaa..2c3e89e566 100644
--- a/Tools/VECTOConsoleStart/Program.cs
+++ b/Tools/VECTOConsoleStart/Program.cs
@@ -4,6 +4,9 @@ namespace TUGraz.VECTO
 {
 	class Program
 	{
-		static void Main(string[] args) => StarterHelper.StartVECTO(args);
+		static void Main(string[] args)
+		{
+			StarterHelper.StartVECTO(args, true);
+		}
 	}
 }
diff --git a/Tools/VECTOStart/StarterHelper.cs b/Tools/VECTOStart/StarterHelper.cs
index 40e4bab537..0aec4549e9 100644
--- a/Tools/VECTOStart/StarterHelper.cs
+++ b/Tools/VECTOStart/StarterHelper.cs
@@ -3,30 +3,53 @@ using System;
 using System.Collections;
 using System.Diagnostics;
 using System.IO;
+using System.Linq;
 using System.Reflection;
 
 namespace TUGraz.VECTO
 {
 	class StarterHelper
 	{
-		public static void StartVECTO(string[] args, params string[] validVersions)
+		public static void StartVECTO(string[] cmdArguments, params string[] validVersions)
+		{
+			StartVECTO(cmdArguments, false, validVersions);
+		}
+
+        public static void StartVECTO(string[] cmdArguments, bool consoleApp, params string[] validVersions)
 		{
 			var path = "No path found.";
 			string version = "No version found.";
 			if (validVersions is null || validVersions.Length == 0) {
 				validVersions = new[] { "net45", "net48", "net60" };
 			}
+
+			//var versionArgument = cmdArguments.FirstOrDefault(arg => arg.StartsWith("net"));
 			try {
-				if (args.Length > 0) {
-					version = args[0].ToLower();
-				} else {
-					version = GetHighestNETVersion();
-				}
+				version = GetHighestNETVersion();
+				
 
 				path = $"{version}\\{Assembly.GetExecutingAssembly().GetName().Name}.exe";
-				Process.Start(new ProcessStartInfo(path) {
-					WorkingDirectory = Directory.GetCurrentDirectory()
-				});
+
+				string argumentsString = "";
+				if (cmdArguments.Length > 0) {
+					foreach (var cmdArgument in cmdArguments) {
+						argumentsString += "\"" +  cmdArgument + "\" ";
+					}
+				}
+
+				var processInfo = new ProcessStartInfo(path) {
+					WorkingDirectory = Directory.GetCurrentDirectory(),
+					Arguments = argumentsString,
+				};
+				
+
+				if (consoleApp) {
+					processInfo.UseShellExecute = consoleApp ? false : processInfo.UseShellExecute;
+                    Process.Start(processInfo)?.WaitForExit();
+                } else {
+					Process.Start(processInfo);
+				}
+				
 				ValidateVersion(version, validVersions);
 			} catch (Exception e) {
 				var message = $"Error during starting VECTO.\nDetected .NET version: {version}\nTried to open path: {path}\n{e.Message}";
-- 
GitLab