public override bool Execute()
        {
            Log.LogMessage("Generating template pack report using format [{0}] to file: [{1}]", ReportType, OutputFile.GetFullPath());

            if (SnippetFiles == null)
            {
                SnippetFiles = new ITaskItem[] { };
            }

            // the info that we want to show includes the following data
            // Name, Description, ProjetType, ProjectSubType?
            XNamespace ns = "http://schemas.microsoft.com/developer/vstemplate/2005";

            var allResults = from d in this.GetTemplateFilesAsDocs()
                             from r in d.Document.Root.Descendants(ns + "TemplateData")
                             orderby r.ElementSafeValue(ns + "Name")
                             orderby r.ElementSafeValue(ns + "ProjectSubType")
                             orderby r.ElementSafeValue(ns + "ProjectType")
                             orderby d.TemplateType
                             select new TemplatePackReportModel
            {
                TemplatePath   = d.TemplatePath,
                TemplateType   = d.TemplateType,
                Name           = r.ElementSafeValue(ns + "Name"),
                Description    = r.ElementSafeValue(ns + "Description"),
                ProjectType    = r.ElementSafeValue(ns + "ProjectType"),
                ProjectSubType = r.ElementSafeValue(ns + "ProjectSubType")
            };

            IList <string> snippetFilePaths = new List <string>();

            SnippetFiles.ToList().ForEach(snippetItem => {
                snippetFilePaths.Add(snippetItem.GetFullPath());
            });

            var snippets = GetAllSnippetInfo(snippetFilePaths);

            Log.LogMessage("info.count [{0}]", allResults.Count());
            ITemplatePackReportWriter reportWriter = null;

            if (_reportType == Tasks.ReportType.Text)
            {
                reportWriter = new TextTemplatePackReportWriter();
            }
            else if (_reportType == Tasks.ReportType.Xml)
            {
                reportWriter = new XmlTemplatePackReportWriter();
            }
            else
            {
                Log.LogError("Unknown value for ReportType [{0}]", ReportType);
                return(false);
            }

            reportWriter.WriteReport(OutputFile.GetFullPath(), allResults, snippets);

            return(true);
        }
        public override bool Execute() {
            Log.LogMessage("Generating template pack report using format [{0}] to file: [{1}]",ReportType, OutputFile.GetFullPath());

            if (SnippetFiles == null) { SnippetFiles = new ITaskItem[] { }; }

            // the info that we want to show includes the following data
            // Name, Description, ProjetType, ProjectSubType?
            XNamespace ns = "http://schemas.microsoft.com/developer/vstemplate/2005";

            var allResults = from d in this.GetTemplateFilesAsDocs()
                             from r in d.Document.Root.Descendants(ns + "TemplateData")
                             orderby r.ElementSafeValue(ns + "Name")
                             orderby r.ElementSafeValue(ns + "ProjectSubType")
                             orderby r.ElementSafeValue(ns + "ProjectType")
                             orderby d.TemplateType
                             select new TemplatePackReportModel {
                                 TemplatePath = d.TemplatePath,
                                 TemplateType = d.TemplateType,
                                 Name = r.ElementSafeValue(ns + "Name"),
                                 Description = r.ElementSafeValue(ns + "Description"),
                                 ProjectType = r.ElementSafeValue(ns + "ProjectType"),
                                 ProjectSubType = r.ElementSafeValue(ns + "ProjectSubType")
                             };

            IList<string> snippetFilePaths = new List<string>();
            SnippetFiles.ToList().ForEach(snippetItem => {
                snippetFilePaths.Add(snippetItem.GetFullPath());
            });

            var snippets = GetAllSnippetInfo(snippetFilePaths);

            Log.LogMessage("info.count [{0}]", allResults.Count());
            ITemplatePackReportWriter reportWriter = null;
            if (_reportType == Tasks.ReportType.Text) {
                reportWriter = new TextTemplatePackReportWriter();
            }
            else if (_reportType == Tasks.ReportType.Xml) {
                reportWriter = new XmlTemplatePackReportWriter();
            }
            else {
                Log.LogError("Unknown value for ReportType [{0}]", ReportType);
                return false;
            }

            reportWriter.WriteReport(OutputFile.GetFullPath(), allResults, snippets);

            return true;
        }