56 lines
1.4 KiB
Bash
56 lines
1.4 KiB
Bash
#!/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" |