Skip to content

Commit 031f9a3

Browse files
committed
Add formatting during build
1 parent 96878b2 commit 031f9a3

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

.editorconfig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ fsharp_multiline_bracket_style = aligned
3030
fsharp_max_array_or_list_number_of_items = 1
3131
fsharp_array_or_list_multiline_formatter = number_of_items
3232
fsharp_max_infix_operator_expression = 10
33-
fsharp_multi_line_lambda_closing_newline = true
3433

3534

3635

Directory.Build.targets

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<!--
2+
This file allows overriding of properties for all projects in the directory.
3+
See https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-by-directory?view=vs-2022#directorybuildprops-and-directorybuildtargets
4+
-->
5+
<Project>
6+
<ItemGroup>
7+
<!-- Dotnet Watch to know about this file -->
8+
<Watch Include="$(MSBuildThisFileFullPath)"/>
9+
</ItemGroup>
10+
11+
<PropertyGroup>
12+
<_BuildProjBaseIntermediateOutputPath>$(MSBuildThisFileDirectory)build/obj/</_BuildProjBaseIntermediateOutputPath>
13+
<_DotnetToolManifestFile>$(MSBuildThisFileDirectory).config/dotnet-tools.json</_DotnetToolManifestFile>
14+
<_DotnetToolRestoreOutputFile>$(_BuildProjBaseIntermediateOutputPath)/dotnet-tool-restore-$(NETCoreSdkVersion)-$(OS)</_DotnetToolRestoreOutputFile>
15+
<_DotnetFantomasOutputFile>$(BaseIntermediateOutputPath)dotnet-fantomas-msbuild-$(NETCoreSdkVersion)-$(OS)</_DotnetFantomasOutputFile>
16+
</PropertyGroup>
17+
18+
<!-- Make sure that dotnet tools are restored before restoring any project -->
19+
<Target Name="ToolRestore" BeforeTargets="Restore;CollectPackageReferences" Inputs="$(_DotnetToolManifestFile)" Outputs="$(_DotnetToolRestoreOutputFile)">
20+
<Exec Command="dotnet tool restore" WorkingDirectory="$(MSBuildThisFileDirectory)" StandardOutputImportance="High" StandardErrorImportance="High" />
21+
<MakeDir Directories="$(_BuildProjBaseIntermediateOutputPath)"/>
22+
<Touch Files="$(_DotnetToolRestoreOutputFile)" AlwaysCreate="True" ForceTouch="True" />
23+
</Target>
24+
25+
<!-- Make sure that files are formatted before building -->
26+
<Target Name="FormatFSharp" Condition=" '$(MSBuildProjectExtension)' == '.fsproj' AND '$(DesignTimeBuild)' != 'true' " BeforeTargets="BeforeBuild" Inputs="@(Compile)" Outputs="$(_DotnetFantomasOutputFile)" >
27+
<Exec Command="dotnet fantomas $(MSBuildProjectDirectory)" StandardOutputImportance="High" StandardErrorImportance="High" WorkingDirectory="$(MSBuildThisFileDirectory)" ContinueOnError="WarnAndContinue" />
28+
<Touch Files="$(_DotnetFantomasOutputFile)" AlwaysCreate="True" ForceTouch="True" />
29+
</Target>
30+
31+
<!-- Only format once per project -->
32+
<!-- https://learn.microsoft.com/en-us/visualstudio/msbuild/run-target-exactly-once?view=vs-2022 -->
33+
<Target Name="FormatFSharpBeforeOuterBuild"
34+
DependsOnTargets="FormatFSharp"
35+
BeforeTargets="DispatchToInnerBuilds"
36+
/>
37+
38+
<Target Name="FormatFSharpBeforeInnerBuild"
39+
BeforeTargets="BeforeBuild">
40+
<MSBuild Projects="$(MSBuildProjectFullPath)"
41+
Targets="FormatFSharp"
42+
RemoveProperties="TargetFramework" />
43+
</Target>
44+
45+
46+
</Project>

0 commit comments

Comments
 (0)