in src/BinlogTool/ListTools.cs [77:163]
private string GetToolInfo(Task task)
{
if (ignoreTasks.Contains(task.Name))
{
return null;
}
if (task.Name == "Exec")
{
var args = task.FindChild<Property>(p => p.Name == "CommandLineArguments");
string arguments = null;
if (args == null)
{
var parameters = task.FindChild<Folder>("Parameters");
if (parameters != null)
{
var command = parameters.FindChild<Property>(p => p.Name == "Command");
if (command != null)
{
arguments = command.Value;
}
}
}
else
{
arguments = args.Value as string;
}
if (arguments != null)
{
arguments = arguments.TrimStart('\'', '"');
int space = arguments.IndexOf(' ');
if (space > 0)
{
arguments = arguments.Substring(0, space);
}
arguments = arguments.TrimEnd('\'', '"');
if (arguments == "chmod")
{
return null;
}
return arguments;
}
return null;
}
var assembly = task.FindChild<Property>(p => p.Name == "Assembly");
if (assembly == null)
{
return null;
}
string result = assembly.Value;
if (string.IsNullOrEmpty(result))
{
return null;
}
if (result.StartsWith("Microsoft.Build.Tasks.Core"))
{
return null;
}
var versionMessage = task.FindChild<Message>(m => m.Text is string message &&
message.Length < 200 &&
!message.Contains("\n") &&
!message.Contains("Leaving it untouched") &&
!message.StartsWith("ILLink:") &&
(message.StartsWith("Using Xcode") ||
message.Contains("version", StringComparison.OrdinalIgnoreCase)));
if (versionMessage != null)
{
return versionMessage.Text;
}
if (result.EndsWith(".dll", StringComparison.OrdinalIgnoreCase))
{
result = NormalizePath(result);
return result;
}
return result;
}