| File: TypeScriptApiCompatRunner.cs | Web Access |
| Project: src\tools\TypeScriptApiCompat\TypeScriptApiCompat.csproj (TypeScriptApiCompat) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace TypeScriptApiCompat; internal static class TypeScriptApiCompatRunner { public static int Run(CommandLineOptions options) { try { var excludedPackages = ExcludedPackageLoader.Load(options.ExcludedPackagesFile); var baseline = AtsSurfaceSet.Load(options.BaselinePath); var current = AtsSurfaceSet.Load(options.CurrentPath); var diagnostics = AtsCompatibilityComparer.Compare(baseline, current, excludedPackages); var suppressionLoadResult = ApiCompatSuppressionLoader.Load(options.SuppressionsRoot); var baselineSuppressionLoadResult = options.BaselineSuppressionsRoot is null ? null : ApiCompatSuppressionLoader.Load(options.BaselineSuppressionsRoot); var result = ApiCompatSuppressor.ApplySuppressions(diagnostics, suppressionLoadResult, baselineSuppressionLoadResult, excludedPackages); var report = ApiCompatReport.Create(result); if (!string.IsNullOrWhiteSpace(options.ReportPath)) { var reportDirectory = Path.GetDirectoryName(options.ReportPath); if (!string.IsNullOrEmpty(reportDirectory)) { Directory.CreateDirectory(reportDirectory); } File.WriteAllText(options.ReportPath, report); } if (options.GitHubAnnotations && result.HasFailures) { GitHubAnnotationWriter.WriteErrors(result); } Console.WriteLine(report); return result.HasFailures ? 1 : 0; } catch (Exception ex) when (ex is IOException or UnauthorizedAccessException or InvalidDataException or InvalidOperationException) { Console.Error.WriteLine(ex.Message); return 2; } } }