diff options
author | Matthäus G. Chajdas <cmake@anteru.net> | 2014-02-22 18:46:48 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-02-25 16:14:06 (GMT) |
commit | bcefbe737dee16c58bc578d4d483727ff859f8de (patch) | |
tree | 5131fce84cc4a728ad27319f4c1e7f052c7f66e9 /Modules | |
parent | 8993df6c3db7a105f146f07b7ff5585698b1c29c (diff) | |
download | CMake-bcefbe737dee16c58bc578d4d483727ff859f8de.zip CMake-bcefbe737dee16c58bc578d4d483727ff859f8de.tar.gz CMake-bcefbe737dee16c58bc578d4d483727ff859f8de.tar.bz2 |
FindHg: Add Hg_WC_INFO macro
Add a macro to extract information from a Hg work tree much like the
Subversion_WC_INFO macro does for Subversion work tree.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/FindHg.cmake | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/Modules/FindHg.cmake b/Modules/FindHg.cmake index 8dea652..c418afd 100644 --- a/Modules/FindHg.cmake +++ b/Modules/FindHg.cmake @@ -2,7 +2,7 @@ # FindHg # ------ # -# +# Extract information from a mercurial working copy. # # The module defines the following variables: # @@ -12,6 +12,20 @@ # HG_FOUND - true if the command line client was found # HG_VERSION_STRING - the version of mercurial found # +# If the command line client executable is found the following macro is defined: +# +# :: +# +# HG_WC_INFO(<dir> <var-prefix>) +# +# Hg_WC_INFO extracts information of a mercurial working copy +# at a given location. This macro defines the following variables: +# +# :: +# +# <var-prefix>_WC_CHANGESET - current changeset +# <var-prefix>_WC_REVISION - current revision +# # Example usage: # # :: @@ -19,11 +33,15 @@ # find_package(Hg) # if(HG_FOUND) # message("hg found: ${HG_EXECUTABLE}") +# HG_WC_INFO(${PROJECT_SOURCE_DIR} Project) +# message("Current revision is ${Project_WC_REVISION}") +# message("Current changeset is ${Project_WC_CHANGESET}") # endif() #============================================================================= # Copyright 2010-2012 Kitware, Inc. # Copyright 2012 Rolf Eike Beer <eike@sf-mail.de> +# Copyright 2014 Matthaeus G. Chajdas # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -53,6 +71,21 @@ if(HG_EXECUTABLE) set(HG_VERSION_STRING "${CMAKE_MATCH_1}") endif() unset(hg_version) + + macro(HG_WC_INFO dir prefix) + execute_process(COMMAND ${HG_EXECUTABLE} id -i -n + WORKING_DIRECTORY ${dir} + RESULT_VARIABLE hg_id_result + ERROR_VARIABLE hg_id_error + OUTPUT_VARIABLE ${prefix}_WC_DATA + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT ${hg_id_result} EQUAL 0) + message(SEND_ERROR "Command \"${HG_EXECUTBALE} id -n\" in directory ${dir} failed with output:\n${hg_id_error}") + endif() + + string(REGEX REPLACE "([0-9a-f]+)\\+? [0-9]+\\+?" "\\1" ${prefix}_WC_CHANGESET ${${prefix}_WC_DATA}) + string(REGEX REPLACE "[0-9a-f]+\\+? ([0-9]+)\\+?" "\\1" ${prefix}_WC_REVISION ${${prefix}_WC_DATA}) + endmacro(HG_WC_INFO) endif() # Handle the QUIETLY and REQUIRED arguments and set HG_FOUND to TRUE if |