diff --git a/Src/CSharpier.Cli/CommandLineFormatter.cs b/Src/CSharpier.Cli/CommandLineFormatter.cs index c03481a23..e6a3e7878 100644 --- a/Src/CSharpier.Cli/CommandLineFormatter.cs +++ b/Src/CSharpier.Cli/CommandLineFormatter.cs @@ -330,7 +330,7 @@ CommandLineFormatterResult result ) { if ( - (commandLineOptions.StandardInFileContents != null && result.FailedCompilation > 0) + (!commandLineOptions.CompilationErrorsAsWarnings && result.FailedCompilation > 0) || (commandLineOptions.Check && result.UnformattedFiles > 0) || result.FailedSyntaxTreeValidation > 0 || result.ExceptionsFormatting > 0 @@ -411,7 +411,7 @@ CancellationToken cancellationToken errorMessage.AppendLine(message.ToString()); } - if (commandLineOptions.WriteStdout) + if (!commandLineOptions.CompilationErrorsAsWarnings) { fileIssueLogger.WriteError(errorMessage.ToString()); } diff --git a/Src/CSharpier.Cli/CommandLineOptions.cs b/Src/CSharpier.Cli/CommandLineOptions.cs index 263dea685..04b17041d 100644 --- a/Src/CSharpier.Cli/CommandLineOptions.cs +++ b/Src/CSharpier.Cli/CommandLineOptions.cs @@ -13,6 +13,7 @@ internal class CommandLineOptions public bool WriteStdout { get; init; } public bool NoCache { get; init; } public bool NoMSBuildCheck { get; init; } + public bool CompilationErrorsAsWarnings { get; init; } public bool IncludeGenerated { get; init; } public string? StandardInFileContents { get; init; } public string? ConfigPath { get; init; } @@ -30,6 +31,7 @@ internal delegate Task Handler( bool noCache, bool noMSBuildCheck, bool includeGenerated, + bool compilationErrorsAsWarnings, string config, LogLevel logLevel, CancellationToken cancellationToken @@ -93,6 +95,10 @@ public static RootCommand Create() new Option( new[] { "--config-path" }, "Path to the CSharpier configuration file" + ), + new Option( + new[] { "--compilation-errors-as-warnings" }, + "Treat compilation errors from files as warnings instead of errors." ) }; diff --git a/Src/CSharpier.Cli/Program.cs b/Src/CSharpier.Cli/Program.cs index 5e1ace75b..be5ddf5fe 100644 --- a/Src/CSharpier.Cli/Program.cs +++ b/Src/CSharpier.Cli/Program.cs @@ -33,6 +33,7 @@ public static async Task Run( bool noCache, bool noMSBuildCheck, bool includeGenerated, + bool compilationErrorsAsWarnings, string configPath, LogLevel logLevel, CancellationToken cancellationToken @@ -95,7 +96,8 @@ CancellationToken cancellationToken SkipWrite = skipWrite, WriteStdout = writeStdout || standardInFileContents != null, IncludeGenerated = includeGenerated, - ConfigPath = actualConfigPath + ConfigPath = actualConfigPath, + CompilationErrorsAsWarnings = compilationErrorsAsWarnings, }; return await CommandLineFormatter.Format( diff --git a/Src/CSharpier.MsBuild/build/CSharpier.MsBuild.targets b/Src/CSharpier.MsBuild/build/CSharpier.MsBuild.targets index 8c414e6fc..4af14af55 100644 --- a/Src/CSharpier.MsBuild/build/CSharpier.MsBuild.targets +++ b/Src/CSharpier.MsBuild/build/CSharpier.MsBuild.targets @@ -17,12 +17,14 @@ + + IgnoreExitCode="true" + Command="dotnet "$(CSharpierDllPath)" $(CSharpierArgs) --no-msbuild-check --compilation-errors-as-warnings "$(MSBuildProjectDirectory)" > $(NullOutput) " />