#!/usr/bin/env bash
set -euo pipefail

script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
prompt_root="$(cd "$script_dir/../.." && pwd)"
workspace_root="$(cd "$prompt_root/.." && pwd)"
android_root="$workspace_root/zhctproject/android"
index_file="$prompt_root/work_android/PROJECT_INDEX.md"

if [[ ! -d "$android_root" ]]; then
  echo "Android root not found: $android_root" >&2
  exit 1
fi

if [[ ! -f "$index_file" ]]; then
  echo "Android project index not found: $index_file" >&2
  exit 1
fi

missing=()

for project_dir in "$android_root"/*; do
  [[ -d "$project_dir" ]] || continue

  project_name="$(basename "$project_dir")"
  case "$project_name" in
    .git|.gradle|.idea|build|apk)
      continue
      ;;
  esac

  is_android_project=false
  if [[ -f "$project_dir/settings.gradle" || -f "$project_dir/settings.gradle.kts" ]]; then
    is_android_project=true
  elif [[ -f "$project_dir/build.gradle" || -f "$project_dir/build.gradle.kts" ]]; then
    is_android_project=true
  elif [[ -f "$project_dir/app/src/main/AndroidManifest.xml" ]]; then
    is_android_project=true
  elif [[ -f "$project_dir/gradlew" ]]; then
    is_android_project=true
  fi

  [[ "$is_android_project" == true ]] || continue

  index_path="zhctproject/android/$project_name"
  if ! grep -Fq "\`$index_path\`" "$index_file"; then
    missing+=("$project_name")
  fi
done

if (( ${#missing[@]} > 0 )); then
  echo "Missing Android projects in work_android/PROJECT_INDEX.md:" >&2
  printf ' - %s\n' "${missing[@]}" >&2
  exit 1
fi

echo "Android project index is complete."
