From: Christian Heller Date: Fri, 18 Apr 2025 06:20:42 +0000 (+0000) Subject: Fix. X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/%7B%7Bprefix%7D%7D/condition?a=commitdiff_plain;h=e7b8ed7bc8e5ff958114a360c988116ff02e926f;p=config Fix. --- diff --git a/bookworm/scripts/lib/copy_dirtrees_of_tags b/bookworm/scripts/lib/copy_dirtrees_of_tags index 11fa0f1..36c8a3f 100644 --- a/bookworm/scripts/lib/copy_dirtrees_of_tags +++ b/bookworm/scripts/lib/copy_dirtrees_of_tags @@ -2,21 +2,20 @@ copy_dirtrees_of_tags() { _TAGS="$@" _PATHS_WRITTEN= for _TAG in ${_TAGS}; do - _PATH_TAG="../copy/${_TAG}" if [ ! -d "${_PATH_TAG}" ]; then continue fi cd "${_PATH_TAG}" - for _PATH_REL in $(find . -type f,l); do - _PATH_TARGET="/$(echo ${_PATH_REL} | cut -c 2-)" - _DIRECTORY=$(dirname "${_PATH_TARGET}") + for _PATH_REL in $(find -L . -type f); do + _PATH_TARGET="$(echo ${_PATH_REL} | cut -c 2-)" + _PATH_TARGET_DIR=$(dirname "${_PATH_TARGET}") # ensure directory by mkdir -p; to avoid later chowning pre-existing directories, # collect only what's returned by the command as actually newly created - _CREATION_SUMMARY=$(mkdir -pv "${_DIRECTORY}") + _CREATION_SUMMARY=$(mkdir -pv "${_PATH_TARGET_DIR}") _CREATED_PATHS=$(echo "${_CREATION_SUMMARY}" | sed -E "s/'\$//g" | sed -E "s/^mkdir: created directory '//g") - _PATHS_WRITTEN="${_CREATED_PATHS}${_PATHS_WRITTEN}" + _PATHS_WRITTEN="${_CREATED_PATHS}\n${_PATHS_WRITTEN}" # handle dirtree creation instruction files _FILENAME="$(basename ${_PATH_REL})" @@ -29,25 +28,25 @@ copy_dirtrees_of_tags() { if [ -z "${_LINK_NAME}" ]; then _LINK_NAME=$(basename "${_LINK_TARGET}") fi - _PATH_LINK="${_DIRECTORY}/${_LINK_NAME}" - ln -s "${_LINK_TARGET}" "${_PATH_LINK}" + _PATH_LINK="${_PATH_TARGET_DIR}/${_LINK_NAME}" + ln -sf "${_LINK_TARGET}" "${_PATH_LINK}" _PATHS_WRITTEN="${_PATH_LINK}\n${_PATHS_WRITTEN}" continue fi - + # actual file copying - _PATH_SOURCE=$(realpath "${_PATH_REL}") - _CREATION_SUMMARY=$(cp -av "${_PATH_SOURCE}" "${_PATH_TARGET}") - _CREATED_PATHS=$(echo "${_CREATION_SUMMARY}" | sed -E "s/'\$//g" | sed "s/.*' -> '//g") - _PATHS_WRITTEN="${_CREATED_PATHS}${_PATHS_WRITTEN}" + _CREATION_SUMMARY=$(cp -avL "${_PATH_REL}" "${_PATH_TARGET_DIR}") + _CREATED_PATHS=$(echo "${_CREATION_SUMMARY}" | grep -v -E '^removed ' | sed -E "s/'\$//g" | sed "s/.*' -> '//g") + _PATHS_WRITTEN="${_CREATED_PATHS}\n${_PATHS_WRITTEN}" done cd - > /dev/null done + _PATHS_WRITTEN=$(echo "${_PATHS_WRITTEN}" | grep -v -E '^ *$') - # for all paths written into user home directories, chown to respective users + ## for all paths written into user home directories, chown to respective users for _PATH in ${_PATHS_WRITTEN}; do if [ $(echo "${_PATH}" | grep -E '^/home/' | wc -l) -gt 0 ]; then - _USERNAME=$(echo "${_PATH}" | sed -E '/^\/home\///' | sed -E '/\/.*//i') + _USERNAME=$(echo "${_PATH}" | sed -E 's/^\/home\///' | sed -E 's/\/.*//') chown -R "${_USERNAME}:${_USERNAME}" "${_PATH}" fi done