summaryrefslogtreecommitdiff
path: root/src/internal/SetBuildNumber/SetBuildNumber.proj
blob: 72bb2a0c12bfb1b2d127f2c8b5b77d6d016764f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->

<Project Sdk="Microsoft.Build.NoTargets/3.0.4">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <!-- Disable central package version management since this project will write the central package version management file -->
    <ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>

    <!-- Explicitly set the restore sources because this project may run before the build\artifacts folder has been created -->
    <RestoreSources>https://api.nuget.org/v3/index.json</RestoreSources>
    <RestoreIgnoreFailedSources>true</RestoreIgnoreFailedSources>
  </PropertyGroup>

  <PropertyGroup>
    <SetBuildNumbersDependsOn>
    __SetPropertiesFromGit;
      SetAppVeyorBuildNumber;
      SetGlobalJson;
      SetDirectoryPackagesProps;
    </SetBuildNumbersDependsOn>

    <GlobalJsonPath>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\..\..\global.json))</GlobalJsonPath>
    <CentralPackageVersionsPath>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\..\..\Directory.Packages.props))</CentralPackageVersionsPath>
  </PropertyGroup>

  <Target Name="SetAppVeyorBuildNumber"
          Condition=" '$(APPVEYOR)'=='True' ">
    <PropertyGroup>
      <AppVeyorBuildNumber>$(InformationalVersion)-$(APPVEYOR_BUILD_ID)</AppVeyorBuildNumber>
      <AppVeyorBuildNumber Condition=" '$(APPVEYOR_PULL_REQUEST_NUMBER)'!='' ">PR#$(APPVEYOR_PULL_REQUEST_NUMBER)-$(AppVeyorBuildNumber)</AppVeyorBuildNumber>
      <AppVeyorBuildNumber Condition=" '$(RuntimeTestsEnabled)'!='' ">TEST-$(AppVeyorBuildNumber)</AppVeyorBuildNumber>
    </PropertyGroup>

    <Message Importance="high" Text="  $(AppVeyorBuildNumber)" />

    <Exec Command='appveyor UpdateBuild -Version "$(AppVeyorBuildNumber)"' />
  </Target>


  <Target Name="SetGlobalJson"
          Inputs="global.json.pp"
          Outputs="$(GlobalJsonPath)">
    <PropertyGroup>
      <GlobaJsonTextHeader>/* DO NOT MODIFY! Auto-generated from internal\SetBuildNumber\global.json.pp */</GlobaJsonTextHeader>
      <GlobalJsonText>$([System.IO.File]::ReadAllText(global.json.pp))</GlobalJsonText>
      <GlobalJsonText>$(GlobalJsonText.Replace('{apiversion}', $(ApiVersion)))</GlobalJsonText>
      <GlobalJsonText>$(GlobalJsonText.Replace('{fileversion}', $(FileVersion)))</GlobalJsonText>
      <GlobalJsonText>$(GlobalJsonText.Replace('{fullversion}', $(InformationalVersion)))</GlobalJsonText>
      <GlobalJsonText>$(GlobalJsonText.Replace('{informationalversion}', $(InformationalVersion)))</GlobalJsonText>
      <GlobalJsonText>$(GlobalJsonText.Replace('{height}', $(GitCommits)))</GlobalJsonText>
      <GlobalJsonText>$(GlobalJsonText.Replace('{packageversion}', $(PackageVersion)))</GlobalJsonText>
      <GlobalJsonText>$(GlobalJsonText.Replace('{version}', $(Version)))</GlobalJsonText>
    </PropertyGroup>

    <WriteLinesToFile File="$(GlobalJsonPath)"
                      Lines="$(GlobaJsonTextHeader);$(GlobalJsonText)"
                      Overwrite="true" 
                      WriteOnlyWhenDifferent="true" />

    <Message Importance="high" Text="$(MSBuildProjectName) -&gt; $(GlobalJsonPath)" />
  </Target>


  <Target Name="SetDirectoryPackagesProps"
          Inputs="Directory.Packages.props.pp"
          Outputs="$(CentralPackageVersionsPath)">
    <PropertyGroup>
      <CentralPackageVersionsTextHeader>&lt;!-- DO NOT MODIFY! Auto-generated from internal\SetBuildNumber\Directory.Packages.props.pp --&gt;</CentralPackageVersionsTextHeader>
      <CentralPackageVersionsText>$([System.IO.File]::ReadAllText(Directory.Packages.props.pp))</CentralPackageVersionsText>
      <CentralPackageVersionsText>$(CentralPackageVersionsText.Replace('{apiversion}', $(ApiVersion)))</CentralPackageVersionsText>
      <CentralPackageVersionsText>$(CentralPackageVersionsText.Replace('{fileversion}', $(FileVersion)))</CentralPackageVersionsText>
      <CentralPackageVersionsText>$(CentralPackageVersionsText.Replace('{fullversion}', $(InformationalVersion)))</CentralPackageVersionsText>
      <CentralPackageVersionsText>$(CentralPackageVersionsText.Replace('{informationalversion}', $(InformationalVersion)))</CentralPackageVersionsText>
      <CentralPackageVersionsText>$(CentralPackageVersionsText.Replace('{height}', $(GitCommits)))</CentralPackageVersionsText>
      <CentralPackageVersionsText>$(CentralPackageVersionsText.Replace('{packageversion}', $(PackageVersion)))</CentralPackageVersionsText>
      <CentralPackageVersionsText>$(CentralPackageVersionsText.Replace('{version}', $(Version)))</CentralPackageVersionsText>
    </PropertyGroup>

    <WriteLinesToFile File="$(CentralPackageVersionsPath)"
                      Lines="$(CentralPackageVersionsTextHeader);$(CentralPackageVersionsText)"
                      Overwrite="true" 
                      WriteOnlyWhenDifferent="true" />

    <Message Importance="high" Text="$(MSBuildProjectName) -&gt; $(CentralPackageVersionsPath)" />
  </Target>


  <Target Name="SetBuildNumbers"
          DependsOnTargets="$(SetBuildNumbersDependsOn)"
          BeforeTargets="AfterBuild" />


  <ItemGroup>
    <PackageReference Include="GitInfo" Version="2.1.2" />
  </ItemGroup>
</Project>