From f42a3a1e730bae1fca4ebb55ce46d3e62fc2e461 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 24 Dec 2025 17:04:37 +0000 Subject: [PATCH] perf: optimize file reading and fix sed bug - Remove unnecessary `cat` and `sed` processes in `extract_files_content` - Fix critical bug where `sed 's// /g'` caused data loss - Use direct redirection with `tr` for character filtering - Reduces process forks by 2 per file processed - Ensures compatibility and correctness across bash versions --- .jules/bolt.md | 3 +++ codepack.sh | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .jules/bolt.md diff --git a/.jules/bolt.md b/.jules/bolt.md new file mode 100644 index 0000000..58f12d2 --- /dev/null +++ b/.jules/bolt.md @@ -0,0 +1,3 @@ +## 2024-01-01 - Broken sed pipe causing data loss +**Learning:** `sed 's// /g'` (empty regex) causes exit code 1 and silent data loss in pipes on some Bash versions; `tr` should be used for simple character filtering. +**Action:** Always check exit codes of commands in pipes or use safer alternatives like `tr`. diff --git a/codepack.sh b/codepack.sh index 0d8ae2c..5e5d81a 100755 --- a/codepack.sh +++ b/codepack.sh @@ -851,7 +851,9 @@ extract_files_content() { # Read file content and clean invalid characters local content="" if [[ -r "$file" && -s "$file" ]]; then - content=$(cat "$file" 2>/dev/null | sed 's// /g' 2>/dev/null | tr -cd '\11\12\15\40-\176' 2>/dev/null || echo "") + # Optimization: Use direct redirection instead of cat|sed to reduce process forks + # and fix bug with invalid sed command + content=$(tr -cd '\11\12\15\40-\176' < "$file" 2>/dev/null || echo "") fi debug_log "Content length: ${#content}" >&2