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>
74 lines
2.9 KiB
Bash
Executable file
74 lines
2.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
readonly execution_root="$PROJECT_DIR"
|
|
readonly build_external="$execution_root/external"
|
|
|
|
{
|
|
|
|
# Set `CWD` to `$execution_root` so relative paths in binaries work
|
|
#
|
|
# This is needed because we use the `oso_prefix_is_pwd` feature, which makes the
|
|
# paths to archives relative to the exec root.
|
|
echo "platform settings -w \"$execution_root\""
|
|
|
|
# "Undo" `-debug-prefix-map` for breakpoints
|
|
#
|
|
# This needs to cause the files to match exactly what Xcode set for breakpoints,
|
|
# which is why we don't use `$execution_root` here. Xcode will set the path
|
|
# based on the way you opened a file. If you open a file via the Project
|
|
# navigator, or indexing (e.g. Jump to Definition), it will use the paths
|
|
# specified below.
|
|
|
|
# `bazel-out` when set from Project navigator or swiftsourcefile
|
|
echo "settings set target.source-map ./bazel-out/ \"$BAZEL_OUT\""
|
|
|
|
# `external` when set from Project navigator
|
|
echo "settings append target.source-map ./external/ \"$BAZEL_EXTERNAL\""
|
|
# `external` when set from swiftsourcefile
|
|
echo "settings append target.source-map ./external/ \"$build_external\""
|
|
|
|
if [[ "${BAZEL_SEPARATE_INDEXBUILD_OUTPUT_BASE:-}" == "YES" ]]; then
|
|
readonly output_base="${execution_root%/*/*}"
|
|
|
|
readonly workspace_name="${execution_root##*/}"
|
|
readonly index_execution_root="${output_base%/*}/indexbuild_output_base/execroot/$workspace_name"
|
|
|
|
readonly index_bazel_out="$index_execution_root/bazel-out"
|
|
readonly index_external="$index_execution_root/external"
|
|
|
|
mkdir -p "$index_bazel_out"
|
|
mkdir -p "$index_external"
|
|
|
|
# `bazel-out` when set from indexing opened file
|
|
echo "settings append target.source-map ./bazel-out/ \"$index_bazel_out\""
|
|
# `external` when set from indexing opened file
|
|
echo "settings append target.source-map ./external/ \"$index_external\""
|
|
fi
|
|
|
|
# Project files and locally resolved external repositories
|
|
#
|
|
# lldb seems to match breakpoints based on the second argument, using a simple
|
|
# prefix check that doesn't take into account the trailing slash. This means
|
|
# that we have to order the source-map settings so that the longest paths are
|
|
# first, otherwise an earlier setting can prevent a later setting from matching.
|
|
if [[ -n "${RESOLVED_REPOSITORIES:-}" ]]; then
|
|
# `external` for local repositories when set from Project navigator,
|
|
# and the project root
|
|
while IFS='' read -r x; do repos+=("$x"); done < <(xargs -n1 <<< "$RESOLVED_REPOSITORIES")
|
|
for (( i=0; i<${#repos[@]}; i+=2 )); do
|
|
prefix="${repos[$i]}"
|
|
path="${repos[$i+1]}"
|
|
echo "settings append target.source-map \"$prefix/\" \"$path\""
|
|
done
|
|
fi
|
|
|
|
# Import swift_debug_settings.py
|
|
#
|
|
# This Python module sets a stop hook, that when hit, sets the Swift debug
|
|
# settings (i.e. `target.swift-*``) for the module of the current frame. This
|
|
# fixes debugging when using `-serialize-debugging-options`.
|
|
echo "command script import \"$OBJROOT/$CONFIGURATION/swift_debug_settings.py\""
|
|
|
|
} > "$BAZEL_LLDB_INIT"
|