diff --git a/scripts/collect.sh b/scripts/collect.sh index ce30041..5161679 100755 --- a/scripts/collect.sh +++ b/scripts/collect.sh @@ -16,7 +16,7 @@ declare -A FILTER_SETS=( ["procedures"]="-s doc ./procedures" ) -OUTPUT="/dev/stdout" +OUTPUT="./collect.txt" VERBOSE=0 usage() { @@ -25,7 +25,7 @@ usage() { echo "Options:" echo " -f, --filter PATTERN Regex filter for subsequent directories" echo " -s, --set SETNAME Use predefined set of parameters" - echo " -o, --output FILE Output file (default: stdout)" + echo " -o, --output FILE Output file (default: ./collect.txt, use '-' for stdout)" echo " -v, -vv Verbose output" echo echo "Predefined Filter Sets:" @@ -152,8 +152,14 @@ process_command() { i=$((i+1)) done + # Handle special case for stdout + local output_file="$OUTPUT" + if [ "$OUTPUT" = "-" ]; then + output_file="/dev/stdout" + fi + # Convert output path and check conflicts - output_abs_path=$(realpath -m "$OUTPUT") + output_abs_path=$(realpath -m "$output_file") output_rel_path=$(realpath --relative-to=. "$output_abs_path") # Generate directory tree @@ -164,7 +170,7 @@ process_command() { else find . -name .git -prune -o -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' fi - } > "$OUTPUT" + } > "$output_file" # Process directories and collect files declare -a all_files=() @@ -266,7 +272,7 @@ process_command() { cat "$file" 2>/dev/null || echo "Error: Unable to read file" fi done - } >> "$OUTPUT" + } >> "$output_file" fi } @@ -290,7 +296,12 @@ main() { # Process the completely expanded arguments process_command "${expanded_args[@]}" - echo "Concatenation complete. Output written to $OUTPUT" >&2 + # Use original OUTPUT variable for the message + if [ "$OUTPUT" = "-" ]; then + echo "Concatenation complete. Output written to stdout" >&2 + else + echo "Concatenation complete. Output written to $OUTPUT" >&2 + fi } -main "$@" +main "$@" \ No newline at end of file