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

# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2024 humanlayer Authors (original)
# SPDX-FileCopyrightText: 2025 Jorge Castro (modifications)
#
# thoughts-metadata - Generate git/project metadata for thoughts documents
# Based on HumanLayer project hack/spec_metadata.sh

# Colors for output
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

warn() {
  echo -e "${YELLOW}[WARN]${NC} $1" >&2
}

# Collect metadata
DATETIME_TZ=$(date '+%Y-%m-%d %H:%M:%S %Z')
FILENAME_TS=$(date '+%Y-%m-%d_%H-%M-%S')
DATE_ISO=$(date -u '+%Y-%m-%dT%H:%M:%S%z')
DATE_SHORT=$(date '+%Y-%m-%d')

# Git metadata (with fallbacks if not in a git repo)
if command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
  REPO_ROOT=$(git rev-parse --show-toplevel)
  REPO_NAME=$(basename "$REPO_ROOT")
  GIT_BRANCH=$(git branch --show-current 2>/dev/null || git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "no-branch")
  GIT_COMMIT=$(git rev-parse HEAD 2>/dev/null || echo "no-commit")
  GIT_USER=$(git config user.name 2>/dev/null || echo "unknown")
  GIT_EMAIL=$(git config user.email 2>/dev/null || echo "unknown")
else
  REPO_ROOT=""
  REPO_NAME="no-repo"
  GIT_BRANCH="no-branch"
  GIT_COMMIT="no-commit"
  GIT_USER="unknown"
  GIT_EMAIL="unknown"
fi

# Print metadata in human-readable format (compatible with HumanLayer's format)
echo "Current Date/Time (TZ): $DATETIME_TZ"
echo "ISO DateTime: $DATE_ISO"
echo "Date Short: $DATE_SHORT"
[ -n "$GIT_COMMIT" ] && echo "Current Git Commit Hash: $GIT_COMMIT"
[ -n "$GIT_BRANCH" ] && echo "Current Branch Name: $GIT_BRANCH"
[ -n "$REPO_NAME" ] && echo "Repository Name: $REPO_NAME"
[ -n "$GIT_USER" ] && echo "Git User: $GIT_USER"
[ -n "$GIT_EMAIL" ] && echo "Git Email: $GIT_EMAIL"
echo "Timestamp For Filename: $FILENAME_TS"
