diff options
author | Brad King <brad.king@kitware.com> | 2022-04-27 19:02:44 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2022-04-28 17:36:20 (GMT) |
commit | 4cb616fed63a93547e81812980d59660bdf9757f (patch) | |
tree | d51bd474bd7efcd166a856d2f887c37ec8f58cb0 /Utilities | |
parent | 37fb70591ebd06d8434eb7a650aeaae17b2380e2 (diff) | |
download | CMake-4cb616fed63a93547e81812980d59660bdf9757f.zip CMake-4cb616fed63a93547e81812980d59660bdf9757f.tar.gz CMake-4cb616fed63a93547e81812980d59660bdf9757f.tar.bz2 |
Tutorial: Provide a source archive when published on cmake.org
Provide readers following the tutorial on `cmake.org` a direct link to
download the tutorial's source examples. Previously readers had to
fetch the CMake source tree separately and look for the tutorial source
examples inside it.
Fixes: #22475
Diffstat (limited to 'Utilities')
-rw-r--r-- | Utilities/Sphinx/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Utilities/Sphinx/tutorial_archive.cmake | 42 |
2 files changed, 46 insertions, 0 deletions
diff --git a/Utilities/Sphinx/CMakeLists.txt b/Utilities/Sphinx/CMakeLists.txt index f77bab4..51c035e 100644 --- a/Utilities/Sphinx/CMakeLists.txt +++ b/Utilities/Sphinx/CMakeLists.txt @@ -148,6 +148,10 @@ if(CMake_SPHINX_CMAKE_ORG) list(APPEND doc_html_opts -A outdated=1) endif() + list(APPEND html_pre_commands + COMMAND ${CMAKE_COMMAND} -Dversion=${CMake_VERSION} -P ${CMAKE_CURRENT_SOURCE_DIR}/tutorial_archive.cmake + ) + list(APPEND qthelp_post_commands COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/qthelp/CMake.qch" diff --git a/Utilities/Sphinx/tutorial_archive.cmake b/Utilities/Sphinx/tutorial_archive.cmake new file mode 100644 index 0000000..212a622 --- /dev/null +++ b/Utilities/Sphinx/tutorial_archive.cmake @@ -0,0 +1,42 @@ +if(NOT version) + message(FATAL_ERROR "Pass -Dversion=") +endif() + +# Name of the archive and its top-level directory. +set(archive_name "cmake-${version}-tutorial-source") + +# Base directory for CMake Documentation. +set(help_dir "${CMAKE_CURRENT_LIST_DIR}/../../Help") +cmake_path(ABSOLUTE_PATH help_dir NORMALIZE) + +# Collect the non-documentation part of the tutorial directory. +file(COPY "${help_dir}/guide/tutorial/" + DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${archive_name}" + NO_SOURCE_PERMISSIONS + PATTERN *.rst EXCLUDE + PATTERN source.txt EXCLUDE + ) +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${archive_name}/README.txt" [[ +This directory contains source code examples for the CMake Tutorial. +Each step has its own subdirectory containing code that may be used as a +starting point. The tutorial examples are progressive so that each step +provides the complete solution for the previous step. +]]) + +# Create an archive containing the tutorial source examples. +file(MAKE_DIRECTORY "${help_dir}/_generated") +file(ARCHIVE_CREATE + OUTPUT "${help_dir}/_generated/${archive_name}.zip" + PATHS "${CMAKE_CURRENT_BINARY_DIR}/${archive_name}" + FORMAT zip + ) + +# Write a reStructuredText snippet included from the tutorial index. +file(WRITE "${help_dir}/guide/tutorial/source.txt" " +.. |tutorial_source| replace:: + The tutorial source code examples are available in + :download:`this archive </_generated/${archive_name}.zip>`. +") + +# Remove temporary directory. +file(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/${archive_name}") |