File: Program.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.
 
using System.CommandLine;
using TypeScriptApiCompat;
 
var baselineOption = new Option<string>("--baseline")
{
    Description = "Directory containing base-branch *.ats.txt files.",
    Required = true
};
 
var currentOption = new Option<string>("--current")
{
    Description = "Directory containing current *.ats.txt files.",
    Required = true
};
 
var suppressionsRootOption = new Option<string?>("--suppressions-root")
{
    Description = "Repository root containing *.tscompat.suppression.txt files.",
    DefaultValueFactory = _ => Directory.GetCurrentDirectory()
};
 
var baselineSuppressionsRootOption = new Option<string?>("--baseline-suppressions-root")
{
    Description = "Target-branch repository root containing inherited suppression files."
};
 
var excludedPackagesFileOption = new Option<string?>("--excluded-packages-file")
{
    Description = "Newline-delimited package names to exclude from TypeScript API compatibility."
};
 
var reportOption = new Option<string?>("--report")
{
    Description = "Write a Markdown report."
};
 
var githubAnnotationsOption = new Option<bool>("--github-annotations")
{
    Description = "Emit GitHub Actions ::error annotations."
};
 
var rootCommand = new RootCommand("Compare Aspire TypeScript/ATS API baselines.");
rootCommand.Options.Add(baselineOption);
rootCommand.Options.Add(currentOption);
rootCommand.Options.Add(suppressionsRootOption);
rootCommand.Options.Add(baselineSuppressionsRootOption);
rootCommand.Options.Add(excludedPackagesFileOption);
rootCommand.Options.Add(reportOption);
rootCommand.Options.Add(githubAnnotationsOption);
 
rootCommand.SetAction(parseResult =>
{
    var options = new CommandLineOptions(
        parseResult.GetValue(baselineOption)!,
        parseResult.GetValue(currentOption)!,
        parseResult.GetValue(suppressionsRootOption)!,
        parseResult.GetValue(baselineSuppressionsRootOption),
        parseResult.GetValue(excludedPackagesFileOption),
        parseResult.GetValue(reportOption),
        parseResult.GetValue(githubAnnotationsOption));
 
    return TypeScriptApiCompatRunner.Run(options);
});
 
return rootCommand.Parse(args).Invoke();