From 97fe310d51803cda28c316d8fb6f564bea71066a Mon Sep 17 00:00:00 2001 From: gearama <50641385+gearama@users.noreply.github.com> Date: Tue, 8 Oct 2024 22:44:41 -0700 Subject: [PATCH] Get TSP files from remote git location with sparse checkout (#6081) * Get TSP files from remote git location with sparce checkout * PR comments * spell * use SHA --- cmake-modules/TSPCompile.cmake | 42 +++++++++++++++++++ .../CMakeLists.txt | 12 ++++++ 2 files changed, 54 insertions(+) create mode 100644 cmake-modules/TSPCompile.cmake diff --git a/cmake-modules/TSPCompile.cmake b/cmake-modules/TSPCompile.cmake new file mode 100644 index 000000000..3ea028c38 --- /dev/null +++ b/cmake-modules/TSPCompile.cmake @@ -0,0 +1,42 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +find_package(Git) + +macro(DownloadTSPFiles TSP_REPO 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}") + + if(Git_FOUND) + message("Git found: ${GIT_EXECUTABLE}") + else() + message(FATAL_ERROR "Git not found") + endif() + + set(DOWNLOAD_FOLDER ${CMAKE_SOURCE_DIR}/build/${TSP_DESTINATION}) + #cleanup folder + file(REMOVE_RECURSE ${DOWNLOAD_FOLDER}) + make_directory(${DOWNLOAD_FOLDER}) + + #init git in folder + execute_process(COMMAND ${GIT_EXECUTABLE} init + WORKING_DIRECTORY ${DOWNLOAD_FOLDER}) + #add remote + execute_process(COMMAND ${GIT_EXECUTABLE} remote add origin ${TSP_REPO} + WORKING_DIRECTORY ${DOWNLOAD_FOLDER}) + #set sparse-checkout + execute_process(COMMAND ${GIT_EXECUTABLE} sparse-checkout init --cone + WORKING_DIRECTORY ${DOWNLOAD_FOLDER}) + #set sparse-checkout folder + execute_process(COMMAND ${GIT_EXECUTABLE} sparse-checkout set ${TSP_REPO_PATH} + WORKING_DIRECTORY ${DOWNLOAD_FOLDER}) + #fetch + execute_process(COMMAND ${GIT_EXECUTABLE} fetch + WORKING_DIRECTORY ${DOWNLOAD_FOLDER}) + #switch branch + execute_process(COMMAND ${GIT_EXECUTABLE} checkout ${TSP_SHA} + WORKING_DIRECTORY ${DOWNLOAD_FOLDER}) + + if (NOT ${STATUS_CODE} EQUAL 0) + message(FATAL_ERROR "TSP download failed (Link: ${TSP_FULL_PATH}).") + endif() +endmacro() diff --git a/sdk/keyvault/azure-security-keyvault-secrets/CMakeLists.txt b/sdk/keyvault/azure-security-keyvault-secrets/CMakeLists.txt index c4665a9e9..7cc62a8ce 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/CMakeLists.txt +++ b/sdk/keyvault/azure-security-keyvault-secrets/CMakeLists.txt @@ -31,6 +31,18 @@ include(AzureConfigRTTI) include(AzureBuildTargetForCI) # Add create_map_file function include(CreateMapFile) +option(TSP_GEN "Generate from TypeSpec" OFF) + +if(TSP_GEN) + include(TSPCompile) + + 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() if(FETCH_SOURCE_DEPS) GetFolderList(SECRETS)