#!/usr/bin/env bash set -euo pipefail # --------------------------------------------------------- # Usage: # ./context-generator.sh # ./context-generator.sh /path/to/project # --------------------------------------------------------- SOURCE_PATH="${1:-}" if [[ -z "$SOURCE_PATH" ]]; then # If no path is provided, use current path SEARCH_PATH="." OUTPUT_PREFIX="xDashboard" else if [[ ! -d "$SOURCE_PATH" ]]; then echo "Error: path '$SOURCE_PATH' is not a directory." >&2 exit 1 fi # Resolve absolute path SEARCH_PATH="$(cd "$SOURCE_PATH" && pwd)" # Get last folder of the path LAST_FOLDER="$(basename "$SEARCH_PATH")" # Optional: make folder name safe for file name SAFE_LAST_FOLDER="$(printf '%s' "$LAST_FOLDER" | tr -c '[:alnum:]._-' '_')" OUTPUT_PREFIX="xDashboard-${SAFE_LAST_FOLDER}" fi TIMESTAMP="$(date +%Y%m%d_%H%M%S)" OUTPUT_FILE="./Documents/GeneratedContext/${OUTPUT_PREFIX}-${TIMESTAMP}.txt" find "$SEARCH_PATH" -type f \( \ -name "Dockerfile" \ -o -name "docker-compose.yaml" \ -o -name "*.cs" \ -o -name "*.ts" \ -o -name "*.html" \ -o -name "*.scss" \ \) \ -not -path "*/bin/*" \ -not -path "*/obj/*" \ -not -path "*/dist/*" \ -not -path "*/node_modules/*" \ -print0 | while IFS= read -r -d '' file; do printf '\n### FILE: %s\n\n' "$file" cat "$file" done > "$OUTPUT_FILE" echo "Context generated: $OUTPUT_FILE"