#!/bin/bash createFolders() { local silent_flag="$1" local user_name="$2" for dir_path in "${@:3}"; do local folder_name=$(basename "$dir_path") local clean_dir=$(echo "$dir_path" | sed 's#//*#/#g') # Under /docker/containers// the owner is the docker install user # (the rootless container + host generators run as it), so create the dir # AS that user via runFileOp — creating it as the right owner avoids a # chown-to-another-user the unprivileged runtime can't do. Mirrors # createTouch; the $user_name hint is advisory for these paths. if [[ "$clean_dir" == "$containers_dir"* || "$clean_dir" == "${LP_CONTAINERS_DIR:-/libreportal-containers}"/* ]]; then if [ ! -d "$dir_path" ]; then local result; result=$(runFileOp mkdir -p "$dir_path") [ "$silent_flag" == "loud" ] && checkSuccess "Creating $folder_name directory" elif [ "$silent_flag" == "loud" ]; then isNotice "$folder_name directory already exists" fi continue fi # Non-container path = manager-owned control plane -> create AS the # manager (runInstallOp); no root, no chown. if [ ! -d "$dir_path" ]; then local result; result=$(runInstallOp mkdir -p "$dir_path") [ "$silent_flag" == "loud" ] && checkSuccess "Creating $folder_name directory" elif [ "$silent_flag" == "loud" ]; then isNotice "$folder_name directory already exists" fi done }