|
|
|
@ -413,21 +413,60 @@ namespace DepotDownloader
|
|
|
|
|
var list = new List<T>();
|
|
|
|
|
var index = IndexOfParam(args, param);
|
|
|
|
|
|
|
|
|
|
if (index == -1 || index == (args.Length - 1))
|
|
|
|
|
// Ensure the parameter was found and there is at least one value after it
|
|
|
|
|
if (index == -1 || index >= args.Length - 1)
|
|
|
|
|
return list;
|
|
|
|
|
|
|
|
|
|
index++;
|
|
|
|
|
|
|
|
|
|
var converter = TypeDescriptor.GetConverter(typeof(T));
|
|
|
|
|
if (converter == null)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Warning: No type converter available for type {typeof(T)}");
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var strParam = args[index];
|
|
|
|
|
|
|
|
|
|
// Handle the scenario where we have a single space-separated string of values
|
|
|
|
|
if (strParam.Contains(" ") && !strParam.StartsWith("-"))
|
|
|
|
|
{
|
|
|
|
|
// Directly split and convert all elements into a list of T
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
list = strParam.Split(' ', StringSplitOptions.RemoveEmptyEntries)
|
|
|
|
|
.Select(val => (T)converter.ConvertFromString(val))
|
|
|
|
|
.Where(convertedVal => convertedVal != null)
|
|
|
|
|
.ToList();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Warning: Unable to convert values from '{strParam}' to type {typeof(T)}. Exception: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Handle each value provided as an individual argument
|
|
|
|
|
while (index < args.Length)
|
|
|
|
|
{
|
|
|
|
|
var strParam = args[index];
|
|
|
|
|
strParam = args[index];
|
|
|
|
|
|
|
|
|
|
if (strParam[0] == '-') break;
|
|
|
|
|
// Stop parsing if a new parameter starts
|
|
|
|
|
if (strParam.StartsWith("-"))
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
var converter = TypeDescriptor.GetConverter(typeof(T));
|
|
|
|
|
if (converter != null)
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var convertedValue = converter.ConvertFromString(strParam);
|
|
|
|
|
if (convertedValue != null)
|
|
|
|
|
{
|
|
|
|
|
list.Add((T)convertedValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
list.Add((T)converter.ConvertFromString(strParam));
|
|
|
|
|
Console.WriteLine($"Warning: Unable to convert value '{strParam}' to type {typeof(T)}. Exception: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
index++;
|
|
|
|
|