Kv tsp secrets2 (#6094)
* compact the macros copy generated files * some comments * Cleanup and update to the latest SHAs * sdffds * working hybrid * cleanup * clang * Update cmake-modules/TSPCompile.cmake Co-authored-by: Rick Winter <rick.winter@microsoft.com> --------- Co-authored-by: Rick Winter <rick.winter@microsoft.com>
This commit is contained in:
parent
4dba315a29
commit
0ec700a819
@ -3,8 +3,17 @@
|
||||
|
||||
find_package(Git)
|
||||
|
||||
macro(GenerateCodeFromTypeSpec TSP_SHA TSP_REPO_PATH TSP_DESTINATION CODEGEN_SHA CODEGEN_DESTINATION )
|
||||
|
||||
message("Generating code using the following params TSP_SHA=${TSP_SHA} TSP_REPO_PATH=${TSP_REPO_PATH} TSP_DESTINATION=${TSP_DESTINATION} CODEGEN_SHA=${CODEGEN_SHA} CODEGEN_DESTINATION=${CODEGEN_DESTINATION}")
|
||||
set(CODEGEN_PATH packages/typespec-cpp)
|
||||
DownloadTSPFiles(${TSP_SHA} ${TSP_REPO_PATH} ${TSP_DESTINATION})
|
||||
DownloadCodeGenerator(${CODEGEN_SHA} ${CODEGEN_DESTINATION})
|
||||
GenerateCodeFromTSP(${TSP_DESTINATION} ${TSP_REPO_PATH} ${CODEGEN_DESTINATION} ${CODEGEN_PATH})
|
||||
endmacro()
|
||||
|
||||
macro(DownloadTSPFiles TSP_SHA TSP_REPO_PATH TSP_DESTINATION)
|
||||
message ("Downloading TSP files using the following params TSP_REPO=${TSP_REPO} TSP_SHA=${TSP_SHA} TSP_REPO_PATH=${TSP_REPO_PATH} TSP_DESTINATION=${TSP_DESTINATION}")
|
||||
message ("Downloading TSP files using the following params TSP_REPO=${TSP_REPO} TSP_SHA=${TSP_SHA} TSP_REPO_PATH=${TSP_REPO_PATH} TSP_DESTINATION=${TSP_DESTINATION}")
|
||||
|
||||
if(Git_FOUND)
|
||||
message("Git found: ${GIT_EXECUTABLE}")
|
||||
@ -49,7 +58,7 @@ macro(DownloadTSPFiles TSP_SHA TSP_REPO_PATH TSP_DESTINATION)
|
||||
endmacro()
|
||||
|
||||
macro (DownloadCodeGenerator CODEGEN_SHA CODEGEN_DESTINATION)
|
||||
message("Downloading CODEGEN files using the following params CODEGEN_REPO=${CODEGEN_REPO} CODEGEN_SHA=${CODEGEN_SHA} CODEGEN_DESTINATION=${CODEGEN_DESTINATION}")
|
||||
message("Downloading CODEGEN files using the following params CODEGEN_REPO=${CODEGEN_REPO} CODEGEN_SHA=${CODEGEN_SHA} CODEGEN_DESTINATION=${CODEGEN_DESTINATION}")
|
||||
|
||||
if(Git_FOUND)
|
||||
message("Git found: ${GIT_EXECUTABLE}")
|
||||
@ -85,24 +94,38 @@ macro(GenerateCodeFromTSP TSP_DESTINATION TSP_REPO_PATH CODEGEN_DESTINATION CODE
|
||||
message("Generating code using the following params TSP_DESTINATION=${TSP_DESTINATION} TSP_REPO_PATH=${TSP_REPO_PATH} CODEGEN_DESTINATION=${CODEGEN_DESTINATION}")
|
||||
message("Remember to Download the typspec-cpp emitter from npmjs.org")
|
||||
#TODO : https://github.com/Azure/azure-sdk-for-cpp/issues/6071
|
||||
set(DOWNLOAD_CODEGEN_FOLDER ${CMAKE_SOURCE_DIR}/build/${CODEGEN_DESTINATION}/${CODEGEN_PATH})
|
||||
set(DOWNLOAD_CODEGEN_FOLDER ${CMAKE_SOURCE_DIR}/build/${CODEGEN_DESTINATION}/${CODEGEN_PATH}/specs/)
|
||||
set(DOWNLOAD_TSP_FOLDER ${CMAKE_SOURCE_DIR}/build/${TSP_DESTINATION}/${TSP_REPO_PATH})
|
||||
set(CODEGEN_CPP_FOLDER ${DOWNLOAD_CODEGEN_FOLDER}/../../../codegen.cpp)
|
||||
set(CODEGEN_CPP_FOLDER ${DOWNLOAD_CODEGEN_FOLDER}/../../../codegen.cpp)
|
||||
set(SCRIPTS_FOLDER ${CMAKE_SOURCE_DIR}/eng/scripts/typespec/)
|
||||
message("Will copy tsp files from ${DOWNLOAD_TSP_FOLDER} to ${DOWNLOAD_CODEGEN_FOLDER}")
|
||||
#copy tsp files to the codegen folder
|
||||
file(COPY ${DOWNLOAD_TSP_FOLDER}
|
||||
DESTINATION ${DOWNLOAD_CODEGEN_FOLDER})
|
||||
|
||||
execute_process(COMMAND npm install -g @azure-tools/typespec-client-generator-cli
|
||||
WORKING_DIRECTORY ${DOWNLOAD_CODEGEN_FOLDER})
|
||||
message("Will copy tsp generation scripts from ${SCRIPTS_FOLDER} to ${DOWNLOAD_CODEGEN_FOLDER}")
|
||||
file(COPY ${SCRIPTS_FOLDER}
|
||||
DESTINATION ${DOWNLOAD_CODEGEN_FOLDER})
|
||||
|
||||
execute_process(COMMAND npm install -g @azure-tools/typespec-azure-rulesets
|
||||
WORKING_DIRECTORY ${DOWNLOAD_CODEGEN_FOLDER})
|
||||
#generate code
|
||||
#build codegen
|
||||
message("Building codegen in folder ${DOWNLOAD_CODEGEN_FOLDER}")
|
||||
execute_process(COMMAND pwsh Build-Codegen.ps1
|
||||
WORKING_DIRECTORY ${DOWNLOAD_CODEGEN_FOLDER})
|
||||
|
||||
#generate code
|
||||
message("Use codegen in folder ${DOWNLOAD_CODEGEN_FOLDER}")
|
||||
execute_process(COMMAND pwsh Generate-Code.ps1
|
||||
WORKING_DIRECTORY ${DOWNLOAD_CODEGEN_FOLDER})
|
||||
endmacro()
|
||||
|
||||
macro(UpdateCodeFilesFromGenerated CODEGEN_DESTINATION INCLUDE_DESTINATION SOURCE_DESTINATION)
|
||||
message("Updating code files using the following params CODEGEN_DESTINATION=${CODEGEN_DESTINATION} INCLUDE_DESTINATION=${INCLUDE_DESTINATION} SOURCE_DESTINATION=${SOURCE_DESTINATION}")
|
||||
set(CODEGEN_PATH packages/typespec-cpp/specs)
|
||||
set(INCLUDE_SRC ${CMAKE_SOURCE_DIR}/build/${CODEGEN_DESTINATION}/${CODEGEN_PATH}/generated/inc/)
|
||||
set(SOURCE_SRC ${CMAKE_SOURCE_DIR}/build/${CODEGEN_DESTINATION}/${CODEGEN_PATH}/generated/src/)
|
||||
|
||||
message("Copying files from ${INCLUDE_SRC} to ${INCLUDE_DESTINATION}")
|
||||
file(COPY ${INCLUDE_SRC} DESTINATION ${INCLUDE_DESTINATION})
|
||||
|
||||
message("Copying files from ${SOURCE_SRC} to ${SOURCE_DESTINATION}")
|
||||
file(COPY ${SOURCE_SRC} DESTINATION ${SOURCE_DESTINATION})
|
||||
|
||||
endmacro()
|
||||
|
||||
39
eng/scripts/typespec/Build-Codegen.ps1
Normal file
39
eng/scripts/typespec/Build-Codegen.ps1
Normal file
@ -0,0 +1,39 @@
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[switch] $ForceInstall = $false,
|
||||
[switch] $Reinstall = $false
|
||||
)
|
||||
|
||||
pushd
|
||||
cd ..\..\
|
||||
cd codegen.cpp
|
||||
|
||||
if ($Reinstall) {
|
||||
rm -Recurse -Force .\node_modules\ && rm .\package-lock.json
|
||||
}
|
||||
|
||||
if ($ForceInstall) {
|
||||
npm install --force
|
||||
} else {
|
||||
npm install
|
||||
}
|
||||
|
||||
npm run build
|
||||
|
||||
cd ..\typespec-cpp
|
||||
|
||||
if ($Reinstall) {
|
||||
rm -Recurse -Force .\node_modules\ && rm .\package-lock.json
|
||||
}
|
||||
|
||||
if ($ForceInstall) {
|
||||
npm install --force
|
||||
} else {
|
||||
npm install
|
||||
}
|
||||
|
||||
npm run build
|
||||
popd
|
||||
7
eng/scripts/typespec/Cleanup-Directory.ps1
Normal file
7
eng/scripts/typespec/Cleanup-Directory.ps1
Normal file
@ -0,0 +1,7 @@
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
[CmdletBinding()]
|
||||
param()
|
||||
|
||||
Get-ChildItem -Exclude *.cpp,*.tsp,*.ps1,*.yaml,.clang-format,generated | Remove-Item -Recurse -Force
|
||||
44
eng/scripts/typespec/Generate-Code.ps1
Normal file
44
eng/scripts/typespec/Generate-Code.ps1
Normal file
@ -0,0 +1,44 @@
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory=$false)]
|
||||
[string] $ClangFormatPath = "clang-format"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$PSNativeCommandUseErrorActionPreference = $true
|
||||
|
||||
pushd
|
||||
cd $PSScriptRoot
|
||||
cd ../
|
||||
$typespecCppDir = Get-Location
|
||||
popd
|
||||
|
||||
pushd
|
||||
Write-Host "Invoking: tsp compile ."
|
||||
tsp compile --emit $typespecCppDir .
|
||||
|
||||
if (-not (Test-Path ".clang-format")) {
|
||||
$oldProgressPreference = $ProgressPreference
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/Azure/azure-sdk-for-cpp/azure-core_1.13.0/.clang-format" -OutFile ".clang-format"
|
||||
$ProgressPreference = $oldProgressPreference
|
||||
}
|
||||
|
||||
try {
|
||||
& "$ClangFormatPath" -version
|
||||
} catch {
|
||||
Write-Error "Clang-Format not found at: $ClangFormatPath"
|
||||
popd
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host "Formatting generated code with clang-format"
|
||||
Get-ChildItem generated -Include *.cpp, *.hpp -Recurse | ForEach-Object -Process{
|
||||
" Processing: $_"
|
||||
& "$ClangFormatPath" -i $_
|
||||
}
|
||||
|
||||
popd
|
||||
@ -31,35 +31,30 @@ include(AzureConfigRTTI)
|
||||
include(AzureBuildTargetForCI)
|
||||
# Add create_map_file function
|
||||
include(CreateMapFile)
|
||||
option(TSP_GEN "Generate from TypeSpec" OFF)
|
||||
|
||||
if(TSP_GEN)
|
||||
include(TSPCompile)
|
||||
option(AZURE_TSP_KV_SECRETS_GEN "Generate KeyVault Secrets from TypeSpec" OFF)
|
||||
message("KeyVault Secrets TSP Generation ${AZURE_TSP_KV_SECRETS_GEN}")
|
||||
|
||||
set(TSP_DESTINATION "keyvault_secrets")
|
||||
set(TSP_REPO "https://github.com/Azure/azure-rest-api-specs.git")
|
||||
set(TSP_SHA "1da5a85c4dc4f4f1caa47fff691e85960ef4bf20")
|
||||
set(TSP_REPO_PATH "specification/keyvault/data-plane/Security.KeyVault.Secrets/")
|
||||
|
||||
DownloadTSPFiles(${TSP_REPO} ${TSP_SHA} ${TSP_REPO_PATH} ${TSP_DESTINATION})
|
||||
endif()
|
||||
|
||||
option(AZURE_TSP_KV_SECRETS_GEN "Generate from TypeSpec" OFF)
|
||||
message("KeyVault Secrets TSP Generation ${az_TSP_KV_SECRETS_GEN}")
|
||||
if(AZURE_TSP_KV_SECRETS_GEN)
|
||||
include(TSPCompile)
|
||||
|
||||
#typespec related repo information
|
||||
set(TSP_REPO_PATH "specification/keyvault/data-plane/Security.KeyVault.Secrets/")
|
||||
set(TSP_SHA "1124d1074d262dc20a010c2a9d366f8e7a452927")
|
||||
set(TSP_SHA "1da5a85c4dc4f4f1caa47fff691e85960ef4bf20")
|
||||
set(TSP_DESTINATION "keyvault_secrets")
|
||||
|
||||
set(CODEGEN_SHA "b4107ff1b9ce83aedf1d299a63575b6c27434de0")
|
||||
|
||||
#codegen related repo information
|
||||
set(CODEGEN_SHA "1a9e3b7a337d5553603b8326dd3be5024d53b28a")
|
||||
set(CODEGEN_DESTINATION "typespec-cpp")
|
||||
set(CODEGEN_PATH "packages/typespec-cpp/samples/keyvault/secrets")
|
||||
|
||||
#destination folders
|
||||
set(INCLUDE_DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/inc/azure/keyvault/secrets")
|
||||
set(SOURCE_DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
|
||||
DownloadTSPFiles(${TSP_SHA} ${TSP_REPO_PATH} ${TSP_DESTINATION})
|
||||
DownloadCodeGenerator(${CODEGEN_SHA} ${CODEGEN_DESTINATION})
|
||||
GenerateCodeFromTSP(${TSP_DESTINATION} ${TSP_REPO_PATH} ${CODEGEN_DESTINATION} ${CODEGEN_PATH})
|
||||
#generate code from typespec
|
||||
GenerateCodeFromTypeSpec(${TSP_SHA} ${TSP_REPO_PATH} ${TSP_DESTINATION} ${CODEGEN_SHA} ${CODEGEN_DESTINATION})
|
||||
#update code files left this as a separate step as generating and moving result around
|
||||
#conceptually are two different steps
|
||||
UpdateCodeFilesFromGenerated(${CODEGEN_DESTINATION} ${INCLUDE_DESTINATION} ${SOURCE_DESTINATION})
|
||||
endif()
|
||||
|
||||
if(FETCH_SOURCE_DEPS)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user