static ElectiveReport CheckGraphicsAPI(SupportedConfiguration config) { var report = new ElectiveReport(); if (config.SupportedGraphicsAPIs == null || config.SupportedGraphicsAPIs.Length == 0) { return(report); } if (config.SupportedGraphicsAPIs.Any(api => api == SystemInfo.graphicsDeviceType)) { if (config.SupportedGraphicsAPIsIsOrdered && config.SupportedGraphicsAPIs[0] != SystemInfo.graphicsDeviceType) { report.AddMessageFail(Messages.UnsupportedGraphicsSupportedVersionsAre + config.SupportedGraphicsAPIs.Stringify() + Messages.DetectedVersionIs + SystemInfo.graphicsDeviceType + Messages.EndQuoteNewLine + Messages.GraphicsApiIsUnsupportedOrder); } else { report.AddMessagePass(Messages.GraphicsApiIsSupported + config.SupportedGraphicsAPIs.Stringify() + Messages.EndQuoteNewLine); } } else { report.AddMessageFail(Messages.UnsupportedGraphicsSupportedVersionsAre + config.SupportedGraphicsAPIs.Stringify() + Messages.DetectedVersionIs + SystemInfo.graphicsDeviceType + Messages.EndQuoteNewLine + Messages.GraphicsApiIsUnsupported); } return(report); }
static ElectiveReport CheckDefineSymbols(SupportedConfiguration config) { var report = new ElectiveReport(); if (config.DefineSymbols == null || config.DefineSymbols.Length == 0) { return(report); } var definesAreMissing = false; foreach (var define in config.DefineSymbols) { if (define.Required && !define.Present) { definesAreMissing = true; } } if (!definesAreMissing) { report.AddMessagePass(Messages.DefineSymbolsFoundAll); } else { report.AddMessageFail(Messages.DefineSymbolsNotFoundHeader); } foreach (var define in config.DefineSymbols) { if (define.Present) { report.AddMessagePass(Messages.DefineSymbolsFound + define.Name + Messages.EndQuoteNewLine); } else { if (define.Required) { report.AddMessageFail(Messages.DefineSymbolsMissed + define.Name + Messages.EndQuoteNewLine); } else { report.AddMessagePass(Messages.DefineSymbolsMissedNotRequired + define.Name + Messages.EndQuoteNewLine); } } } if (definesAreMissing) { var suggestedString = string.Join(";", config.DefineSymbols.Select(m => m.Name).ToArray()); report.MessageFail += Messages.DefineSymbolsExampleHeader + suggestedString + Environment.NewLine; } return(report); }
public static string RunReport(SupportedConfiguration config) { if (config.ReportOutputLevel == SupportedConfiguration.ReportOutputLevels.ReportDisabled) { return("Reporting disabled."); } ElectiveReport[] reports = { CheckGraphicsAPI(config), CheckPackageVersions(config), CheckDefineSymbols(config), }; if (MarsUserPreferences.ElectiveExtensionsReportsErrors) { config.ReportOutputLevel = SupportedConfiguration.ReportOutputLevels.ErrorOnIssue; } else if (config.ReportOutputLevel == SupportedConfiguration.ReportOutputLevels.ErrorOnIssue) { config.ReportOutputLevel = SupportedConfiguration.ReportOutputLevels.WarnOnIssue; } var result = ""; if (config.ReportOutputLevel != SupportedConfiguration.ReportOutputLevels.ReportDisabled) { result = ReportAsString(reports, config); } switch (config.ReportOutputLevel) { case SupportedConfiguration.ReportOutputLevels.ErrorOnIssue when reports.Any(report => !report.Succeeded): Debug.LogError(result + Messages.LogErrorOnIssueDetectedNotice); break; case SupportedConfiguration.ReportOutputLevels.WarnOnIssue when reports.Any(report => !report.Succeeded): Debug.LogWarning(result); break; case SupportedConfiguration.ReportOutputLevels.ReportDisabled: break; case SupportedConfiguration.ReportOutputLevels.DebugLogOnly: Debug.Log(result); break; default: Debug.Log(result); break; } return(result); }
static string ReportAsString(IEnumerable <ElectiveReport> reports, SupportedConfiguration config) { var messagesPass = ""; var messagesFail = ""; foreach (var report in reports) { messagesPass += report.MessagePass; messagesFail += report.MessageFail; } if (reports.All(report => report.Succeeded)) { return(Messages.NoIssuesFound + messagesPass + Messages.ReportUsedConfig + config.FriendlyName + Messages.EndQuoteNewLine); } return(messagesFail + Environment.NewLine + Messages.FollowingPassed + Environment.NewLine + messagesPass + Messages.ReportUsedConfig + config.FriendlyName + Messages.EndQuoteNewLine); }
static ElectiveReport CheckPackageVersions(SupportedConfiguration config) { var report = new ElectiveReport(); if (config.Dependencies == null || config.Dependencies.Length == 0) { return(report); } var installedPackages = InstalledPackages.Infos; var pairs = new List <MatchedPackagePair>(); foreach (var dependency in config.Dependencies) { var pair = new MatchedPackagePair { dependencyPackage = dependency }; foreach (var installedPackage in installedPackages) { if (dependency.Name == installedPackage.name) { pair.installedPackage = installedPackage; pair.foundNameMatch = true; break; } } pairs.Add(pair); } foreach (var pair in pairs) { report = ComparePackagesForReport(pair, report); } return(report); }