You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.7 KiB
C#

using System;
using System.IO;
using System.Diagnostics;
internal static class Program
{
/// <summary>
/// C# coding standards tool for Netcode that relies on `.editorconfig` ruleset and `dotnet format` tool
/// </summary>
/// <param name="check">Check for standards issues (will not change files)</param>
/// <param name="fix">Try to fix standards issues (could change files)</param>
/// <param name="project">Target project folder</param>
/// <param name="pattern">Search pattern string</param>
/// <param name="verbosity">Logs verbosity level</param>
private static int Main(
bool check = false, bool fix = false,
string project = "",
string pattern = "*.sln",
string verbosity = "normal")
{
if (check && fix)
{
Console.WriteLine($"FAILED: Please use --{nameof(check)} or --{nameof(fix)} individually, not both at the same time");
return 1;
}
if (!check && !fix)
{
Console.WriteLine($"FAILED: Please use at least one of --{nameof(check)} or --{nameof(fix)} workflows");
return 2;
}
foreach (var file in Directory.GetFiles(project, pattern))
{
var procInfo = new ProcessStartInfo("dotnet");
procInfo.Arguments = check
? $"format {file} whitespace --no-restore --verify-no-changes --verbosity {verbosity}"
: $"format {file} whitespace --no-restore --verbosity {verbosity}";
Console.WriteLine($"######## START -> {(check ? "check" : "fix")} whitespace issues");
var whitespace = Process.Start(procInfo);
whitespace.WaitForExit();
if (whitespace.ExitCode != 0)
{
Console.WriteLine("######## FAILED -> found whitespace issues (see details above)");
return whitespace.ExitCode;
}
Console.WriteLine("######## SUCCEEDED -> no whitespace issues");
procInfo.Arguments = check
? $"format {file} style --severity error --no-restore --verify-no-changes --verbosity {verbosity}"
: $"format {file} style --severity error --no-restore --verbosity {verbosity}";
Console.WriteLine($"######## START -> {(check ? "check" : "fix")} style/naming issues");
var style = Process.Start(procInfo);
style.WaitForExit();
if (style.ExitCode != 0)
{
Console.WriteLine("######## FAILED -> found style/naming issues (see details above)");
return style.ExitCode;
}
Console.WriteLine("######## SUCCEEDED -> no style/naming issues");
}
return 0;
}
}