From 9611eca0ca2b92a984feac18ecb2a6ea609ca88d Mon Sep 17 00:00:00 2001 From: Don Date: Mon, 18 Mar 2019 11:32:22 -0700 Subject: Add URL for targeting Github Enterprise instances Allow setting of a URL so vcpkg can download repositories hosted on GitHub Enterprise instances. Additionally provides a way to set the authorization token when downloading private repositories. --- scripts/cmake/vcpkg_from_github.cmake | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_from_github.cmake b/scripts/cmake/vcpkg_from_github.cmake index 48bfd828a..5dbac973b 100644 --- a/scripts/cmake/vcpkg_from_github.cmake +++ b/scripts/cmake/vcpkg_from_github.cmake @@ -56,7 +56,7 @@ ## * [ms-gsl](https://github.com/Microsoft/vcpkg/blob/master/ports/ms-gsl/portfile.cmake) ## * [beast](https://github.com/Microsoft/vcpkg/blob/master/ports/beast/portfile.cmake) function(vcpkg_from_github) - set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF) + set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF GITHUB_URL TOKEN) set(multipleValuesArgs PATCHES) cmake_parse_arguments(_vdud "" "${oneValueArgs}" "${multipleValuesArgs}" ${ARGN}) @@ -76,6 +76,18 @@ function(vcpkg_from_github) message(FATAL_ERROR "At least one of REF and HEAD_REF must be specified.") endif() + if(NOT DEFINED _vdud_GITHUB_URL) + set(GITHUB_URL https://github.com) + set(GITHUB_API_URL https://api.github.com) + else() + set(GITHUB_URL ${_vdud_GITHUB_URL}) + set(GITHUB_API_URL ${_vdud_GITHUB_URL}/api/v3) + endif() + + if(DEFINED _vdud_TOKEN) + set(HEADERS "HEADERS" "Authorization: token ${_vdud_TOKEN}") + endif() + string(REGEX REPLACE ".*/" "" REPO_NAME ${_vdud_REPO}) string(REGEX REPLACE "/.*" "" ORG_NAME ${_vdud_REPO}) @@ -106,9 +118,10 @@ function(vcpkg_from_github) string(REPLACE "/" "-" SANITIZED_REF "${_vdud_REF}") vcpkg_download_distfile(ARCHIVE - URLS "https://github.com/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_REF}.tar.gz" + URLS "${GITHUB_URL}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_REF}.tar.gz" SHA512 "${_vdud_SHA512}" FILENAME "${ORG_NAME}-${REPO_NAME}-${SANITIZED_REF}.tar.gz" + ${HEADERS} ) vcpkg_extract_source_archive_ex( @@ -123,7 +136,7 @@ function(vcpkg_from_github) endif() # The following is for --head scenarios - set(URL "https://github.com/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_HEAD_REF}.tar.gz") + set(URL "${GITHUB_URL}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_HEAD_REF}.tar.gz") string(REPLACE "/" "-" SANITIZED_HEAD_REF "${_vdud_HEAD_REF}") set(downloaded_file_name "${ORG_NAME}-${REPO_NAME}-${SANITIZED_HEAD_REF}.tar.gz") set(downloaded_file_path "${DOWNLOADS}/${downloaded_file_name}") @@ -147,15 +160,17 @@ function(vcpkg_from_github) # Try to download the file and version information from github. vcpkg_download_distfile(ARCHIVE_VERSION - URLS "https://api.github.com/repos/${ORG_NAME}/${REPO_NAME}/git/refs/heads/${_vdud_HEAD_REF}" + URLS "${GITHUB_API_URL}/repos/${ORG_NAME}/${REPO_NAME}/git/refs/heads/${_vdud_HEAD_REF}" FILENAME ${downloaded_file_name}.version SKIP_SHA512 + ${HEADERS} ) vcpkg_download_distfile(ARCHIVE URLS ${URL} FILENAME ${downloaded_file_name} SKIP_SHA512 + ${HEADERS} ) endif() -- cgit v1.2.3 From 45bc9e984816cf69f153376f56c13d712a39b06c Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Fri, 22 Nov 2019 10:05:39 -0800 Subject: [vcpkg_from_github] Rename GITHUB_URL -> GITHUB_HOST Rename TOKEN -> AUTHORIZATION_TOKEN --- scripts/cmake/vcpkg_from_github.cmake | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_from_github.cmake b/scripts/cmake/vcpkg_from_github.cmake index 5dbac973b..35e4bda87 100644 --- a/scripts/cmake/vcpkg_from_github.cmake +++ b/scripts/cmake/vcpkg_from_github.cmake @@ -11,6 +11,8 @@ ## [SHA512 <45d0d7f8cc350...>] ## [HEAD_REF ] ## [PATCHES ...] +## [GITHUB_HOST ] +## [AUTHORIZATION_TOKEN <${SECRET_FROM_FILE}>] ## ) ## ``` ## @@ -45,6 +47,14 @@ ## ## Relative paths are based on the port directory. ## +## ### GITHUB_HOST +## A replacement host for enterprise GitHub instances. +## +## This field should contain the scheme, host, and port of the desired URL without a trailing slash. +## +## ### AUTHORIZATION_TOKEN +## A token to be passed via the Authorization HTTP header as "token ${AUTHORIZATION_TOKEN}". +## ## ## Notes: ## At least one of `REF` and `HEAD_REF` must be specified, however it is preferable for both to be present. ## @@ -56,7 +66,7 @@ ## * [ms-gsl](https://github.com/Microsoft/vcpkg/blob/master/ports/ms-gsl/portfile.cmake) ## * [beast](https://github.com/Microsoft/vcpkg/blob/master/ports/beast/portfile.cmake) function(vcpkg_from_github) - set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF GITHUB_URL TOKEN) + set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF GITHUB_HOST AUTHORIZATION_TOKEN) set(multipleValuesArgs PATCHES) cmake_parse_arguments(_vdud "" "${oneValueArgs}" "${multipleValuesArgs}" ${ARGN}) @@ -76,16 +86,18 @@ function(vcpkg_from_github) message(FATAL_ERROR "At least one of REF and HEAD_REF must be specified.") endif() - if(NOT DEFINED _vdud_GITHUB_URL) - set(GITHUB_URL https://github.com) + if(NOT DEFINED _vdud_GITHUB_HOST) + set(GITHUB_HOST https://github.com) set(GITHUB_API_URL https://api.github.com) else() - set(GITHUB_URL ${_vdud_GITHUB_URL}) - set(GITHUB_API_URL ${_vdud_GITHUB_URL}/api/v3) + set(GITHUB_HOST ${_vdud_GITHUB_HOST}) + set(GITHUB_API_URL ${_vdud_GITHUB_HOST}/api/v3) endif() - if(DEFINED _vdud_TOKEN) - set(HEADERS "HEADERS" "Authorization: token ${_vdud_TOKEN}") + if(DEFINED _vdud_AUTHORIZATION_TOKEN) + set(HEADERS "HEADERS" "Authorization: token ${_vdud_AUTHORIZATION_TOKEN}") + else() + set(HEADERS) endif() string(REGEX REPLACE ".*/" "" REPO_NAME ${_vdud_REPO}) @@ -118,7 +130,7 @@ function(vcpkg_from_github) string(REPLACE "/" "-" SANITIZED_REF "${_vdud_REF}") vcpkg_download_distfile(ARCHIVE - URLS "${GITHUB_URL}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_REF}.tar.gz" + URLS "${GITHUB_HOST}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_REF}.tar.gz" SHA512 "${_vdud_SHA512}" FILENAME "${ORG_NAME}-${REPO_NAME}-${SANITIZED_REF}.tar.gz" ${HEADERS} @@ -136,7 +148,7 @@ function(vcpkg_from_github) endif() # The following is for --head scenarios - set(URL "${GITHUB_URL}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_HEAD_REF}.tar.gz") + set(URL "${GITHUB_HOST}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_HEAD_REF}.tar.gz") string(REPLACE "/" "-" SANITIZED_HEAD_REF "${_vdud_HEAD_REF}") set(downloaded_file_name "${ORG_NAME}-${REPO_NAME}-${SANITIZED_HEAD_REF}.tar.gz") set(downloaded_file_path "${DOWNLOADS}/${downloaded_file_name}") -- cgit v1.2.3