hypertwist/scripts/run-hypertwist-gitnexus-status.sh
2026-06-30 06:32:24 +00:00

54 lines
1.9 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source "$repo_root/scripts/lib-hypertwist-gitnexus.sh"
analysis_root="$repo_root/.gitnexus-source-only-root"
analysis_meta_path="$analysis_root/.gitnexus/meta.json"
require_index="${HYPERTWIST_GITNEXUS_STATUS_REQUIRE_INDEX:-0}"
if [[ ! -d "$analysis_root" ]]; then
message="HyperTwist GitNexus source-only analysis root is currently absent. This is normal after hygiene because .gitnexus-source-only-root is disposable. Run scripts/run-hypertwist-gitnexus-analyze.sh to recreate it before requesting status."
if [[ "$require_index" == "1" ]]; then
echo "$message" >&2
exit 1
fi
echo "$message"
exit 0
fi
if [[ ! -f "$analysis_meta_path" ]]; then
first_message="HyperTwist GitNexus source-only analysis root exists, but no completed index metadata is available yet."
second_message="This can happen during an interrupted refresh or immediately after rebuilding the disposable bounded mirror. Rerun scripts/run-hypertwist-gitnexus-analyze.sh to recreate a finished index before requesting status again."
if [[ "$require_index" == "1" ]]; then
echo "$first_message" >&2
echo "$second_message" >&2
exit 1
fi
echo "$first_message"
echo "$second_message"
exit 0
fi
cd "$analysis_root"
local_cli_available=0
if local_gitnexus_cli="$(hypertwist_gitnexus_resolve_local_cli "$repo_root")"; then
local_cli_available=1
fi
if [[ "$local_cli_available" -eq 1 ]]; then
if [[ "${HYPERTWIST_GITNEXUS_DEBUG_LOCAL:-0}" == "1" ]]; then
if node "$local_gitnexus_cli" status "$@"; then
exit 0
fi
elif node "$local_gitnexus_cli" status "$@" 2>/dev/null; then
exit 0
fi
echo "Local retained GitNexus CLI status failed after passing the runtime probe. Falling back to npx gitnexus@latest." >&2
fi
exec npx -y gitnexus@latest status "$@" 2>/dev/null