|
| 1 | +# Build the target languages |
| 2 | +function(BuildBook LANGUAGE SOURCE_DIR TARGET_DIR) |
| 3 | + set(LANGUAGE "${LANGUAGE}") |
| 4 | + |
| 5 | + if(NOT EXISTS "${SOURCE_DIR}/src/SUMMARY.md") |
| 6 | + message(WARNING "Skipping '${LANGUAGE}' – SUMMARY.md not found at ${SOURCE_DIR}") |
| 7 | + return() |
| 8 | + endif() |
| 9 | + |
| 10 | + if(NOT EXISTS "${SOURCE_DIR}/book.toml") |
| 11 | + message(WARNING "Skipping '${LANGUAGE}' – book.toml not found at ${SOURCE_DIR}") |
| 12 | + return() |
| 13 | + endif() |
| 14 | + |
| 15 | + message(STATUS "Building book for language: ${LANGUAGE}") |
| 16 | + execute_process( |
| 17 | + COMMAND mdbook build -d ${TARGET_DIR} |
| 18 | + WORKING_DIRECTORY ${SOURCE_DIR} |
| 19 | + ) |
| 20 | +endfunction() |
| 21 | + |
| 22 | +# Check if the translations theme folder exists |
| 23 | +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/translations/theme") |
| 24 | + message(STATUS "Translations theme folder found.") |
| 25 | +else() |
| 26 | + message(WARNING "Translations theme folder not found. Copy it from the guide folder.") |
| 27 | + file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/theme" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/translations") |
| 28 | +endif() |
| 29 | + |
| 30 | +# For 'mdbook serve' usage |
| 31 | +if(NOT DEFINED SERVE) |
| 32 | + set(SERVE OFF) |
| 33 | +endif() |
| 34 | + |
| 35 | +if(SERVE) |
| 36 | + # Dont need to build Enslish version, it would be built when running 'mdbook serve' |
| 37 | + BuildBook("zh-TW" "${CMAKE_CURRENT_SOURCE_DIR}/translations/zh-TW" "${CMAKE_CURRENT_SOURCE_DIR}/.tmp-output/zh-TW") # would copy these translation to the book folder later |
| 38 | + |
| 39 | + message(STATUS "Running 'mdbook serve'") |
| 40 | + if(WIN32) |
| 41 | + execute_process( |
| 42 | + COMMAND powershell -Command "Start-Process mdbook -ArgumentList 'serve','-d','${CMAKE_CURRENT_SOURCE_DIR}/book'" |
| 43 | + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" |
| 44 | + ) |
| 45 | + else() |
| 46 | + execute_process( |
| 47 | + COMMAND bash -c "mdbook serve -d \"${CMAKE_CURRENT_SOURCE_DIR}/book\" &" |
| 48 | + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" |
| 49 | + ) |
| 50 | + endif() |
| 51 | + |
| 52 | + # Move the zh-TW output folder into book/ |
| 53 | + message(STATUS "Moving the translation folder to final location...") |
| 54 | + execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 2) |
| 55 | + |
| 56 | + # Move the translation folder to the book folder |
| 57 | + file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/book") |
| 58 | + file(RENAME |
| 59 | + "${CMAKE_CURRENT_SOURCE_DIR}/.tmp-output/zh-TW" |
| 60 | + "${CMAKE_CURRENT_SOURCE_DIR}/book/zh-TW" |
| 61 | + ) |
| 62 | + |
| 63 | + # Remove the temporary output folder |
| 64 | + message(STATUS "Removed temporary folder: .tmp-output") |
| 65 | + file(REMOVE_RECURSE "${CMAKE_CURRENT_SOURCE_DIR}/.tmp-output") |
| 66 | +else() |
| 67 | + # Only Build the target languages for `mdbook build` usage |
| 68 | + BuildBook("en" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/book") |
| 69 | + BuildBook("zh-TW" "${CMAKE_CURRENT_SOURCE_DIR}/translations/zh-TW" "${CMAKE_CURRENT_SOURCE_DIR}/book/zh-TW") |
| 70 | +endif() |
0 commit comments