godot/modules/mono/editor/GodotTools/GodotTools.Shared/GenerateGodotNupkgsVersions.targets

<Project>
  <!-- Generate C# file with the version of all the nupkgs bundled with Godot -->

  <Target Name="SetPropertiesForGenerateGodotNupkgsVersions">
    <PropertyGroup>
      <GeneratedGodotNupkgsVersionsFile>$(IntermediateOutputPath)GodotNupkgsVersions.g.cs</GeneratedGodotNupkgsVersionsFile>
    </PropertyGroup>
  </Target>

  <Target Name="GenerateGodotNupkgsVersionsFile"
          DependsOnTargets="_GenerateGodotNupkgsVersionsFile"
          BeforeTargets="PrepareForBuild;CompileDesignTime;BeforeCompile;CoreCompile">
    <ItemGroup>
      <Compile Include="$(GeneratedGodotNupkgsVersionsFile)" />
      <FileWrites Include="$(GeneratedGodotNupkgsVersionsFile)" />
    </ItemGroup>
  </Target>
  <Target Name="_GenerateGodotNupkgsVersionsFile"
          DependsOnTargets="SetPropertiesForGenerateGodotNupkgsVersions"
          Inputs="$(MSBuildProjectFile);$(MSBuildThisFileDirectory);$(MSBuildProjectFile)\..\..\..\SdkPackageVersions.props"
          Outputs="$(GeneratedGodotNupkgsVersionsFile)">
    <PropertyGroup>
      <GenerateGodotNupkgsVersionsCode><![CDATA[
namespace $(RootNamespace)
{
    public class GeneratedGodotNupkgsVersions
    {
        public const string GodotNETSdk = "$(PackageVersion_Godot_NET_Sdk)"%3b
        public const string GodotSourceGenerators = "$(PackageVersion_Godot_SourceGenerators)"%3b
        public const string GodotSharp = "$(PackageVersion_GodotSharp)"%3b
    }
}
]]></GenerateGodotNupkgsVersionsCode>
    </PropertyGroup>
    <WriteLinesToFile Lines="$(GenerateGodotNupkgsVersionsCode)"
                      File="$(GeneratedGodotNupkgsVersionsFile)"
                      Overwrite="True" WriteOnlyWhenDifferent="True" />
  </Target>
</Project>