|
1 | 1 | <Project> |
2 | | - |
3 | | - <PropertyGroup> |
4 | | - <_AutoRestVersion>https://github.com/Azure/autorest/releases/download/autorest-3.0.6236/autorest-3.0.6236.tgz</_AutoRestVersion> |
5 | | - <_AutoRestCoreVersion>3.0.6306</_AutoRestCoreVersion> |
6 | | - <_AutoRestCSharpVersion>https://github.com/Azure/autorest.csharp/releases/download/3.0.0-dev.20200811.1/autorest-csharp-v3-3.0.0-dev.20200811.1.tgz</_AutoRestCSharpVersion> |
7 | | - <_SupportsCodeGeneration Condition="'$(IsClientLibrary)' == 'true'">true</_SupportsCodeGeneration> |
8 | | - <_DefaultInputName Condition="Exists('$(MSBuildProjectDirectory)/autorest.md')">$(MSBuildProjectDirectory)/autorest.md</_DefaultInputName> |
9 | | - <AutoRestInput Condition="'$(AutoRestInput)' == ''">$(_DefaultInputName)</AutoRestInput> |
10 | | - <!-- |
11 | | - Allows passing additional AutoRest command line arguments, for example to run in interactive mode |
12 | | - use the following command line (remove the space between minus minus): dotnet build /t:GenerateCode /p:AutoRestAdditionalParameters="- -interactive" |
13 | | - --> |
14 | | - <AutoRestAdditionalParameters></AutoRestAdditionalParameters> |
15 | | - |
16 | | - <_GenerateCode Condition="'$(_SupportsCodeGeneration)' == 'true' AND '$(AutoRestInput)' != ''">true</_GenerateCode> |
17 | | - </PropertyGroup> |
18 | | - |
| 2 | + |
19 | 3 | <PropertyGroup> |
| 4 | + <TypeSpecInput Condition="Exists('$(MSBuildProjectDirectory)/../tsp-location.yaml') and $(MSBuildProjectDirectory.EndsWith('src'))">$(MSBuildProjectDirectory)/../tsp-location.yaml</TypeSpecInput> |
| 5 | + <_TypeSpecProjectGenerateCommand>npx --no-install --package=@azure-tools/typespec-client-generator-cli --yes tsp-client generate --no-prompt --output-dir $(MSBuildProjectDirectory)/../</_TypeSpecProjectGenerateCommand> |
| 6 | + <_TypeSpecProjectSyncAndGenerateCommand>npx --no-install --package=@azure-tools/typespec-client-generator-cli --yes tsp-client update --no-prompt --output-dir $(MSBuildProjectDirectory)/../</_TypeSpecProjectSyncAndGenerateCommand> |
| 7 | + <_SaveInputs Condition="'$(SaveInputs)' == 'true'">--save-inputs</_SaveInputs> |
| 8 | + <!-- Here we append the generate-test-project configuration to TypespecAdditionalOptions if it is specified --> |
| 9 | + <TypespecAdditionalOptions Condition="'$(GenerateTestProject)' != '' AND '$(TypespecAdditionalOptions)' != ''">$(TypespecAdditionalOptions)%3Bgenerate-test-project=true</TypespecAdditionalOptions> |
| 10 | + <TypespecAdditionalOptions Condition="'$(GenerateTestProject)' != '' AND '$(TypespecAdditionalOptions)' == ''">generate-test-project=true</TypespecAdditionalOptions> |
| 11 | + <_TypespecAdditionalOptions Condition="'$(TypespecAdditionalOptions)' != ''">--emitter-options "$(TypespecAdditionalOptions)"</_TypespecAdditionalOptions> |
| 12 | + <_LocalSpecRepo Condition="'$(LocalSpecRepo)' != ''">--local-spec-repo $(LocalSpecRepo)</_LocalSpecRepo> |
20 | 13 | </PropertyGroup> |
21 | 14 |
|
22 | | - <Target Name="GenerateCode" Condition="'$(_GenerateCode)' == 'true'" > |
23 | | - <ReadLinesFromFile File="$(AutoRestInput)"> |
24 | | - <Output TaskParameter="Lines" ItemName="AutoRestInputLines"/> |
25 | | - </ReadLinesFromFile> |
26 | | - |
27 | | - <ItemGroup> |
28 | | - <GithubUrls Include="$([System.Text.RegularExpressions.Regex]::Match('%(AutoRestInputLines.Identity)', 'https?://(raw.)?github.+'))" /> |
29 | | - <GithubUrlsWithoutIssues Include="%(GithubUrls.Identity)" Condition="! ($([System.Text.RegularExpressions.Regex]::IsMatch('%(GithubUrls.Identity)', '/issues/\d+')))" /> |
30 | | - <GithubUrlsWithoutHash Include="%(GithubUrlsWithoutIssues.Identity)" Condition="! ($([System.Text.RegularExpressions.Regex]::IsMatch('%(GithubUrlsWithoutIssues.Identity)', '[\w\d]{40}')))" /> |
31 | | - </ItemGroup> |
32 | | - |
33 | | - <Error Text="Following GitHub URLs do not contain commit hash: @(GithubUrlsWithoutHash) please use permalinks for code generation inputs (see https://help.github.com/en/github/managing-files-in-a-repository/getting-permanent-links-to-files) " Condition="'@(GithubUrlsWithoutHash)' != ''" /> |
34 | | - |
35 | | - <RemoveDir Directories="$(MSBuildProjectDirectory)/Generated"/> |
36 | | - <Exec Command="npx autorest@$(_AutoRestVersion) --version=$(_AutoRestCoreVersion) $(AutoRestInput) $(AutoRestAdditionalParameters) --use=$(_AutoRestCSharpVersion) --output-folder=$(MSBuildProjectDirectory) --title=$(RootNamespace) --namespace=$(RootNamespace) --shared-source-folder=$(AutoRestSharedCodeDirectory).." /> |
| 15 | + <!-- For projects using the new TypeSpec generator, we don't include the Autorest dependency which pulls in the GenerateCode target. |
| 16 | + So we need to add it here. --> |
| 17 | + <Target Name="GenerateCode" Condition="'$(TypeSpecInput)' != ''"> |
| 18 | + <Error Text="You used skipped sync but didn't have the TempTypeSpecFiles in your project directory. Please run 'dotnet build /t:GenerateCode /p:SaveInputs=true' without SkipSync first at least once" Condition="'$(SkipSync)' == 'true' AND !Exists('$(MSBuildProjectDirectory)/../TempTypeSpecFiles')" /> |
| 19 | + <Exec Command="npm install --prefix $(MSBuildProjectDirectory)/../ @azure-tools/typespec-client-generator-cli --no-save" /> |
| 20 | + <Exec Condition="'$(SkipSync)' == 'true'" Command="$(_TypeSpecProjectGenerateCommand) $(_SaveInputs) $(_TypespecAdditionalOptions) $(_Debug)"/> |
| 21 | + <Exec Condition="'$(SkipSync)' != 'true'" Command="$(_TypeSpecProjectSyncAndGenerateCommand) $(_SaveInputs) $(_LocalSpecRepo) $(_TypespecAdditionalOptions) $(_Debug)"/> |
37 | 22 | </Target> |
38 | 23 |
|
39 | 24 | </Project> |
|
0 commit comments