Files
steipete--codexbar/Scripts/package_product_paths.sh
2026-07-13 12:22:33 +08:00

73 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
codexbar_swiftpm_bin_path() {
local conf="$1"
shift
local command=(swift build --show-bin-path -c "$conf")
local arch
for arch in "$@"; do
command+=(--arch "$arch")
done
local path
if ! path=$("${command[@]}"); then
echo "ERROR: SwiftPM failed to report the ${conf} product directory for: $*" >&2
return 1
fi
if [[ -z "$path" ]]; then
echo "ERROR: SwiftPM reported an empty ${conf} product directory for: $*" >&2
return 1
fi
printf '%s\n' "$path"
}
codexbar_require_product_file() {
local bin_dir="$1"
local name="$2"
local arch_label="$3"
local product="$bin_dir/$name"
if [[ ! -f "$product" ]]; then
echo "ERROR: Missing ${name} for ${arch_label} at SwiftPM-reported path: ${product}" >&2
return 1
fi
printf '%s\n' "$product"
}
codexbar_require_product_directory() {
local bin_dir="$1"
local name="$2"
local context="$3"
local product="$bin_dir/$name"
if [[ ! -d "$product" ]]; then
echo "ERROR: Missing ${name} for ${context} at SwiftPM-reported path: ${product}" >&2
return 1
fi
printf '%s\n' "$product"
}
codexbar_resolve_staged_or_reported_file() {
local stage_root="$1"
local bin_dir="$2"
local name="$3"
local arch="$4"
local staged="$stage_root/$arch/$name"
if [[ -f "$staged" ]]; then
printf '%s\n' "$staged"
return
fi
codexbar_require_product_file "$bin_dir" "$name" "$arch"
}
codexbar_resolve_dsym_path() {
local stage_root="$1"
local bin_dir="$2"
local app_name="$3"
local arch="$4"
local staged="$stage_root/$arch/${app_name}.dSYM"
if [[ -d "$staged" ]]; then
printf '%s\n' "$staged"
return
fi
codexbar_require_product_directory "$bin_dir" "${app_name}.dSYM" "$arch"
}