diff --git a/bin/compose-core b/bin/compose-core index b0e9d31..21232c4 100755 --- a/bin/compose-core +++ b/bin/compose-core @@ -2444,6 +2444,42 @@ get_master_services() { export -f get_master_services +get_current_docker_container_id() { + local line + line=$(cat "/proc/self/cpuset") || return 1 + [[ "$line" == *docker* ]] || return 1 + echo "${line##*/}" +} +export -f get_current_docker_container_id + + +## if we are in a docker compose, we might want to know what is the +## real host path of some local paths. +get_host_path() { + local path="$1" + path=$(realpath "$path") || return 1 + container_id=$(get_current_docker_container_id) || { + print "%s" "$path" + return 0 + } + biggest_dst= + current_src= + while read-0 src dst; do + [[ "$path" == "$dst"* ]] || continue + if [[ "${#biggest_dst}" < "${#dst}" ]]; then + biggest_dst="$dst" + current_src="$src" + fi + done < <(get_volumes_for_container "$container_id") + if [ "$current_src" ]; then + printf "%s" "$current_src" + else + return 1 + fi +} +export -f get_host_path + + _setup_state_dir() { export state_tmpdir=$(mktemp -d -t tmp.XXXXXXXXXX) #debug "Creating temporary state directory in '$state_tmpdir'."