mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-17 06:37:43 -05:00
If a name isn't provided, try to infer it from the git repo (#202)
* Added assert_not_defined check * Function to get package name form git uri and tests * Autofix format * If name is not provided, try to infer it from the git repo * Unset result of cpm_package_name_from_git_uri if there is no match - Also reordered tests to ensure that the result is actually unset when needed * Removed trailing spaces in README * Updated the main example with the new minimal syntax * Well... autofix format again * Update error message for missing name to reflect the possible auto-infer step * Autofix format... yet again :)
This commit is contained in:
committed by
GitHub
parent
2744b87f07
commit
4cbf443363
@@ -134,6 +134,19 @@ endif()
|
||||
include(FetchContent)
|
||||
include(CMakeParseArguments)
|
||||
|
||||
# Infer package name from git repository uri (path or url)
|
||||
function(cpm_package_name_from_git_uri URI RESULT)
|
||||
string(REGEX MATCH "([^/:]+)/?.git/?$" cpmGitUriMatch "${URI}")
|
||||
if(DEFINED cpmGitUriMatch)
|
||||
set(${RESULT}
|
||||
${CMAKE_MATCH_1}
|
||||
PARENT_SCOPE
|
||||
)
|
||||
else()
|
||||
unset(${RESULT} PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Initialize logging prefix
|
||||
if(NOT CPM_INDENT)
|
||||
set(CPM_INDENT
|
||||
@@ -264,12 +277,6 @@ function(CPMAddPackage)
|
||||
|
||||
cmake_parse_arguments(CPM_ARGS "" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}")
|
||||
|
||||
# Check for required arguments
|
||||
|
||||
if(NOT DEFINED CPM_ARGS_NAME)
|
||||
message(FATAL_ERROR "CPM: 'NAME' was not provided for package added with arguments: '${ARGN}'")
|
||||
endif()
|
||||
|
||||
# Set default values for arguments
|
||||
|
||||
if(NOT DEFINED CPM_ARGS_VERSION)
|
||||
@@ -297,6 +304,11 @@ function(CPMAddPackage)
|
||||
if(NOT DEFINED CPM_ARGS_GIT_TAG)
|
||||
set(CPM_ARGS_GIT_TAG v${CPM_ARGS_VERSION})
|
||||
endif()
|
||||
|
||||
# If a name wasn't provided, try to infer it from the git repo
|
||||
if(NOT DEFINED CPM_ARGS_NAME)
|
||||
cpm_package_name_from_git_uri(${CPM_ARGS_GIT_REPOSITORY} CPM_ARGS_NAME)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CPM_SKIP_FETCH FALSE)
|
||||
@@ -309,6 +321,15 @@ function(CPMAddPackage)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Check for required arguments
|
||||
|
||||
if(NOT DEFINED CPM_ARGS_NAME)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"CPM: 'NAME' was not provided and couldn't be automatically inferred for package added with arguments: '${ARGN}'"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Check if package has been added before
|
||||
cpm_check_if_package_already_added(${CPM_ARGS_NAME} "${CPM_ARGS_VERSION}" "${CPM_ARGS_OPTIONS}")
|
||||
if(CPM_PACKAGE_ALREADY_ADDED)
|
||||
|
||||
@@ -36,6 +36,14 @@ function(ASSERT_DEFINED KEY)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(ASSERT_NOT_DEFINED KEY)
|
||||
if(DEFINED ${KEY})
|
||||
message(FATAL_ERROR "assertion failed: '${KEY}' is defiend")
|
||||
else()
|
||||
message(STATUS "test passed: '${KEY}' is not defined")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(ASSERT_TRUTHY KEY)
|
||||
if(${${KEY}})
|
||||
message(STATUS "test passed: '${KEY}' is set truthy")
|
||||
|
||||
Reference in New Issue
Block a user