protected virtual string ValidateArguments(bool ignoreUnknownArguments, Dictionary<string, string> args)
{
ArgumentDescription[] commands = GetArgumentDescriptions();
// check if help was requested.
if (args.ContainsKey("/?"))
{
return GetHelpString(commands);
}
// validate the arguments.
StringBuilder error = new StringBuilder();
foreach (KeyValuePair<string,string> arg in args)
{
ArgumentDescription command = null;
for (int ii = 0; ii < commands.Length; ii++)
{
if (String.Compare(commands[ii].Name, arg.Key, StringComparison.OrdinalIgnoreCase) == 0)
{
command = commands[ii];
break;
}
}
if (command == null)
{
if (!ignoreUnknownArguments)
{
if (error.Length > 0)
{
error.Append("\r\n");
}
error.AppendFormat("Unrecognized argument: {0}", arg.Key);
}
continue;
}
if (command.ValueRequired && String.IsNullOrEmpty(arg.Value))
{
if (error.Length > 0)
{
error.Append("\r\n");
}
error.AppendFormat("{0} requires a value to be specified (syntax {0}:<value>).", arg.Key);
continue;
}
if (!command.ValueAllowed && !String.IsNullOrEmpty(arg.Value))
{
if (error.Length > 0)
{
error.Append("\r\n");
}
error.AppendFormat("{0} does not allow a value to be specified.", arg.Key);
continue;
}
}
// return any error text.
return error.ToString();
}