m323/Sources/MiniProject/MiniProject.xcodeproj/rules_xcodeproj/bazel/copy_dsyms.sh
cediackermann 7903970f08
feat(MiniProject): searchable Stadt-Rundlauf runner TUI
Add a SwiftTUI terminal app that lists race runners from the start list
and results files, with an interactive menu to sort, filter by age group,
toggle finishers vs. non-starters, and live-search by name. Parsing and
transforms are written as pure functions over the file contents.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 12:05:50 +02:00

74 lines
1.8 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
function patch_dsym() {
local dsym_name="$1"
shopt -s extglob
local binary_name="${dsym_name%.dSYM}"
binary_name="${binary_name%@(.app|.appex|.bundle|.dext|.kext|.framework|.pluginkit|.systemextension|.xctest|.xpc)}"
shopt +s extglob
local binary_path="${dsym_name}/Contents/Resources/DWARF/${binary_name}"
if [[ ! -f "$binary_path" ]]; then
echo "dSYM DWARF ${binary_path} does not exist." \
"Skip dSYM patch."
return 1
fi
local dwarf_uuid
dwarf_uuid=$(dwarfdump --uuid "${binary_path}" | cut -d ' ' -f 2)
if [[ -z "${dwarf_uuid// /}" ]]; then
echo "Failed to get dSYM uuid." \
"Skip dSYM patch."
return 1
fi
cat > "${dsym_name}/Contents/Resources/${dwarf_uuid}.plist" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<dict>
<key>DBGVersion</key>
<string>3</string>
<key>DBGSourcePathRemapping</key>
<dict>
<key>./bazel-out/</key>
<string>$BAZEL_OUT/</string>
<key>./external/</key>
<string>$BAZEL_EXTERNAL/</string>
<key>./</key>
<string>$SRCROOT/</string>
</dict>
</dict>
</plist>
EOF
}
readonly rsync="$BAZEL_INTEGRATION_DIR/rsync"
if [[ -n "${BAZEL_OUTPUTS_DSYM:-}" ]]; then
cd "${BAZEL_OUT%/*}"
# shellcheck disable=SC2046
"$rsync" \
--copy-links \
--recursive \
--times \
--archive \
--delete \
${exclude_list:+--exclude-from="$exclude_list"} \
--perms \
--chmod=u+w \
--out-format="%n%L" \
$(xargs -n1 <<< "$BAZEL_OUTPUTS_DSYM") \
"$TARGET_BUILD_DIR"
cd "${TARGET_BUILD_DIR}"
export -f patch_dsym
# shellcheck disable=SC2016
xargs -n1 sh -c 'patch_dsym $(basename "$1")' _ \
<<< "$BAZEL_OUTPUTS_DSYM"
fi