From f6563502eb1a59513141454d5943d2ea5ab39a4a Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 4 Mar 2026 15:23:21 +1100 Subject: [PATCH] xo-cmake: scaffold-subdir: allow preexisting directories --- bin/scaffold-subdir | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/bin/scaffold-subdir b/bin/scaffold-subdir index 5cc8aba..7da5a1b 100755 --- a/bin/scaffold-subdir +++ b/bin/scaffold-subdir @@ -101,8 +101,31 @@ XO_UMBRELLA_ROOT=$(git rev-parse --show-toplevel) TARGET_DIR="${XO_UMBRELLA_ROOT}/${DIR_NAME}" -if [[ -d "$TARGET_DIR" ]]; then - echo "Error: ${TARGET_DIR} already exists" +# Collect files that would be created +WOULD_CREATE=( + "${TARGET_DIR}/CMakeLists.txt" + "${TARGET_DIR}/cmake/xo-bootstrap-macros.cmake" + "${TARGET_DIR}/cmake/${LIB_NAME}Config.cmake.in" +) +if [[ "$MODE" == "shared" ]]; then + WOULD_CREATE+=("${TARGET_DIR}/src/${NAME}/CMakeLists.txt") +fi +if [[ -n "$FACET" ]]; then + WOULD_CREATE+=("${TARGET_DIR}/idl/${FACET}.json5") +fi + +# Error if any would-be-created file already exists +CONFLICTS=() +for f in "${WOULD_CREATE[@]}"; do + if [[ -e "$f" ]]; then + CONFLICTS+=("$f") + fi +done +if [[ ${#CONFLICTS[@]} -gt 0 ]]; then + echo "Error: the following files already exist:" + for f in "${CONFLICTS[@]}"; do + echo " $f" + done exit 1 fi