Skip to content

Commit 135e787

Browse files
lawrence-u10dclaude
andcommitted
chore: update script with improved pip-compile requirements detection
- PEP 508 compliant package name regex (supports dots) - Detection for requirements/*.in files - Detection for pyproject.toml dependencies - Better logging of detected packages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 84d7602 commit 135e787

1 file changed

Lines changed: 31 additions & 6 deletions

File tree

scripts/renovate-security-bump.sh

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,26 +135,51 @@ update_pyproject_version() {
135135
detect_changed_packages() {
136136
echo "Detecting changed dependencies..."
137137

138-
# Try requirements files first
139-
CHANGED_PACKAGES=$(git diff --cached requirements/*.txt 2>/dev/null | grep -E "^[-+][a-zA-Z0-9_-]+==" | sed 's/^[+-]//' | sort -u | head -20 || true)
138+
# Package name regex per PEP 508: starts with letter/digit, can contain letters, digits, dots, underscores, hyphens
139+
local pkg_pattern='^[-+][a-zA-Z0-9][a-zA-Z0-9._-]*=='
140+
141+
# Try requirements/*.txt files first (pip-compile output format)
142+
CHANGED_PACKAGES=$(git diff --cached requirements/*.txt 2>/dev/null | grep -E "$pkg_pattern" | sed 's/^[+-]//' | sort -u | head -20 || true)
143+
144+
if [ -z "$CHANGED_PACKAGES" ]; then
145+
CHANGED_PACKAGES=$(git diff requirements/*.txt 2>/dev/null | grep -E "$pkg_pattern" | sed 's/^[+-]//' | sort -u | head -20 || true)
146+
fi
147+
148+
# Try requirements/*.in files (unpinned requirements)
149+
if [ -z "$CHANGED_PACKAGES" ]; then
150+
CHANGED_PACKAGES=$(git diff --cached requirements/*.in 2>/dev/null | grep -E '^[-+][a-zA-Z0-9][a-zA-Z0-9._-]*' | grep -v '^[-+]#' | grep -v '^[-+]-' | sed 's/^[+-]//' | sed 's/[<>=].*//' | sort -u | head -20 || true)
151+
fi
140152

141153
if [ -z "$CHANGED_PACKAGES" ]; then
142-
CHANGED_PACKAGES=$(git diff requirements/*.txt 2>/dev/null | grep -E "^[-+][a-zA-Z0-9_-]+==" | sed 's/^[+-]//' | sort -u | head -20 || true)
154+
CHANGED_PACKAGES=$(git diff requirements/*.in 2>/dev/null | grep -E '^[-+][a-zA-Z0-9][a-zA-Z0-9._-]*' | grep -v '^[-+]#' | grep -v '^[-+]-' | sed 's/^[+-]//' | sed 's/[<>=].*//' | sort -u | head -20 || true)
143155
fi
144156

145157
# Try uv.lock if no requirements changes found
146158
if [ -z "$CHANGED_PACKAGES" ]; then
147-
CHANGED_PACKAGES=$(git diff --cached uv.lock 2>/dev/null | grep -E "^[-+]name\s*=" | sed -E 's/^[-+]name\s*=\s*"([^"]+)"/\1/' | sort -u | head -20 || true)
159+
CHANGED_PACKAGES=$(git diff --cached uv.lock 2>/dev/null | grep -E '^[-+]name\s*=' | sed -E 's/^[-+]name\s*=\s*"([^"]+)"/\1/' | sort -u | head -20 || true)
148160
fi
149161

150162
if [ -z "$CHANGED_PACKAGES" ]; then
151-
CHANGED_PACKAGES=$(git diff uv.lock 2>/dev/null | grep -E "^[-+]name\s*=" | sed -E 's/^[-+]name\s*=\s*"([^"]+)"/\1/' | sort -u | head -20 || true)
163+
CHANGED_PACKAGES=$(git diff uv.lock 2>/dev/null | grep -E '^[-+]name\s*=' | sed -E 's/^[-+]name\s*=\s*"([^"]+)"/\1/' | sort -u | head -20 || true)
164+
fi
165+
166+
# Try pyproject.toml dependencies section
167+
if [ -z "$CHANGED_PACKAGES" ]; then
168+
CHANGED_PACKAGES=$(git diff --cached pyproject.toml 2>/dev/null | grep -E '^[-+]\s*"?[a-zA-Z0-9][a-zA-Z0-9._-]*[<>=]' | sed -E 's/^[-+]\s*"?([a-zA-Z0-9][a-zA-Z0-9._-]*).*/\1/' | sort -u | head -20 || true)
169+
fi
170+
171+
if [ -z "$CHANGED_PACKAGES" ]; then
172+
CHANGED_PACKAGES=$(git diff pyproject.toml 2>/dev/null | grep -E '^[-+]\s*"?[a-zA-Z0-9][a-zA-Z0-9._-]*[<>=]' | sed -E 's/^[-+]\s*"?([a-zA-Z0-9][a-zA-Z0-9._-]*).*/\1/' | sort -u | head -20 || true)
152173
fi
153174

154175
# Build changelog entry
155176
if [ -n "$CHANGED_PACKAGES" ]; then
156177
PACKAGE_COUNT=$(echo "$CHANGED_PACKAGES" | wc -l | tr -d ' ')
157-
echo "Found $PACKAGE_COUNT changed package(s)"
178+
echo "Found $PACKAGE_COUNT changed package(s):"
179+
echo "$CHANGED_PACKAGES" | head -5 | sed 's/^/ - /'
180+
if [ "$PACKAGE_COUNT" -gt 5 ]; then
181+
echo " ... and $((PACKAGE_COUNT - 5)) more"
182+
fi
158183
else
159184
echo "Could not auto-detect packages, using generic entry"
160185
fi

0 commit comments

Comments
 (0)