private string GetToolInfo()

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;
        }