public int ProcessArguments() { ArgDetail consoleArg = BuildConsoleArgs(); int consoleReturn = ConsoleHelper.PopNewConsole(consoleArg); if (consoleReturn != 0) //Process execute failed { throw new Exception($"Interactive console process execute failed, ErrorCode: {consoleReturn}"); } else { ProcessResult result = JsonSerializer.Deserialize <ProcessResult>(File.ReadAllText(consoleArg.OutFilePath)); if (result != null) { returnValue = Convert.ToInt32(result.ReturnValue); if (result.OutArgValues != null && result.OutArgValues.Count > 0) { int i = 0; foreach (var outArg in result.OutArgValues) { outArgs[i] = outArg.Value; i++; } } } } return(returnValue); }
private ArgDetail BuildConsoleArgs() { // Print Helper text StringBuilder consoleMsgBuilder = new StringBuilder(); consoleMsgBuilder.AppendLine("Help Message:"); consoleMsgBuilder.AppendLine(GetDividingLine()); consoleMsgBuilder.AppendLine(this.HelperMessage); //Console.WriteLine(consoleMsgBuilder.ToString()); consoleMsgBuilder.AppendLine(GetDividingLine()); // Print Action Parameter (In Arguments) if (builder.InArgDataTable.Rows.Count > 0) { consoleMsgBuilder.AppendLine("Action Parameters:"); consoleMsgBuilder.AppendLine(GetDividingLine()); foreach (DataRow row in builder.InArgDataTable.Rows) { consoleMsgBuilder.AppendLine(ConsoleHelper.GenerateLineRow(new string[] { "" + row[0], "" + row[1] })); } consoleMsgBuilder.AppendLine(GetDividingLine()); } consoleMsgBuilder.AppendLine("Action Result:"); consoleMsgBuilder.AppendLine(GetDividingLine()); // output message, out parma, tempfile path ParaCommandInfo returnParam = null; int firstOutArgIndex = 0; string keyVaule = string.Empty; if (builder.HasReturnVal) { //returnValue = GetValueFromConsole("" + builder.OutArgDataTable.Rows[firstOutArgIndex][0], builder.RetValType); returnParam = new ParaCommandInfo() { Content = "" + builder.OutArgDataTable.Rows[firstOutArgIndex][0], ParameterIndex = 0, ParameterName = "" + builder.OutArgDataTable.Rows[firstOutArgIndex][0], Title = "Please enter [Y] when you're ready to perform interactive action or enter [N] to abort the case.", Type = builder.RetValType.ToString(), }; firstOutArgIndex = 1; } ArgDetail arg = new ArgDetail() { HelpMsg = consoleMsgBuilder.ToString(), OutFilePath = Path.GetTempFileName(), ReturnParam = returnParam, OutParams = paraCommands }; return(arg); }