diff --git a/docs/maintainers/vcpkg_from_github.md b/docs/maintainers/vcpkg_from_github.md index 8f9731629..18ab5b976 100644 --- a/docs/maintainers/vcpkg_from_github.md +++ b/docs/maintainers/vcpkg_from_github.md @@ -11,6 +11,8 @@ vcpkg_from_github( [SHA512 <45d0d7f8cc350...>] [HEAD_REF ] [PATCHES ...] + [GITHUB_HOST ] + [AUTHORIZATION_TOKEN <${SECRET_FROM_FILE}>] ) ``` @@ -45,6 +47,14 @@ A list of patches to be applied to the extracted sources. 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. 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}")