@@ -28,82 +28,64 @@ permissions:
2828jobs :
2929 extract-dependencies :
3030 runs-on : ubuntu-latest
31-
31+
3232 steps :
3333 - name : Checkout repository
3434 uses : actions/checkout@v4
3535 with :
3636 fetch-depth : 0 # Need history for comparison
37-
37+
3838 - name : Set up Python
3939 uses : actions/setup-python@v5
4040 with :
4141 python-version : ' 3.12'
42-
42+
4343 - name : Install dependencies
4444 run : pip install pyyaml
45-
45+
4646 - name : Run dependency extraction
4747 run : |
4848 TIMESTAMP=$(date +%Y%m%d_%H%M)
49-
49+
5050 # Generate timestamped version (for artifacts)
5151 python3 .github/workflows/extract_dependency_versions.py \
5252 --output .github/reports/dependency_versions_${TIMESTAMP}.csv \
5353 --report-unversioned \
5454 --report-removed .github/reports/removed_dependencies.json
55-
55+
5656 # Copy to latest version (for repo tracking)
5757 mkdir -p .github/reports
5858 cp .github/reports/dependency_versions_${TIMESTAMP}.csv .github/reports/dependency_versions_latest.csv
59-
59+
6060 # Copy unversioned report if it exists
6161 if [ -f "unversioned_dependencies_${TIMESTAMP}.csv" ]; then
6262 cp unversioned_dependencies_${TIMESTAMP}.csv .github/reports/unversioned_dependencies_latest.csv
6363 fi
64-
64+
6565 echo "TIMESTAMP=${TIMESTAMP}" >> $GITHUB_ENV
66-
66+
6767 - name : Check for changes
6868 id : check_changes
6969 run : |
7070 if [[ -n $(git status --porcelain .github/reports/*_latest.csv) ]]; then
7171 echo "has_changes=true" >> $GITHUB_OUTPUT
72-
72+
7373 # Count dependencies by status from latest
7474 new_count=$(grep -c ",New," .github/reports/dependency_versions_latest.csv 2>/dev/null || echo "0")
7575 changed_count=$(grep -c ",Changed," .github/reports/dependency_versions_latest.csv 2>/dev/null || echo "0")
7676 unchanged_count=$(grep -c ",Unchanged," .github/reports/dependency_versions_latest.csv 2>/dev/null || echo "0")
77-
77+
7878 # Parse removed dependencies from JSON
7979 if [ -f ".github/reports/removed_dependencies.json" ]; then
8080 removed_count=$(python3 -c "import json; print(json.load(open('.github/reports/removed_dependencies.json'))['count'])" 2>/dev/null || echo "0")
81-
82- # Format removed dependencies list for PR body (limit to first 10)
83- removed_list=$(python3 << 'PYTHON_SCRIPT'
84- import json
85- try :
86- data = json.load(open('.github/reports/removed_dependencies.json'))
87- removed = data['removed'][:10]
88- lines = []
89- for dep in removed :
90- critical = ' **[CRITICAL]**' if dep.get('Critical') == 'Yes' else ''
91- lines.append(f" • **{dep['Dependency Name']}** (was : ` {dep['Version']}` ){critical}")
92- lines.append(f" _from {dep['Source File']}_")
93-
94- if data['count'] > 10 :
95- lines.append(f" _... and {data['count'] - 10} more (see CSV for full list)_")
96-
97- print('\n'.join(lines))
98- except :
99- print(' _No removed dependencies_')
100- PYTHON_SCRIPT
101- )
81+
82+ # Simple formatting - just list names and versions
83+ removed_list=$(python3 -c "import json; data=json.load(open('.github/reports/removed_dependencies.json')); removed=data['removed'][:10]; lines=[]; [lines.extend([f\" • **{d['Dependency Name']}** (was: \\\`{d['Version']}\\\`){' **[CRITICAL]**' if d.get('Critical')=='Yes' else ''}\", f\" _from {d['Source File']}_\"]) for d in removed]; (lines.append(f\" _... and {data['count']-10} more_\") if data['count']>10 else None); print('\\n'.join(lines))" 2>/dev/null || echo " _Unable to parse removed dependencies_")
10284 else
10385 removed_count="0"
10486 removed_list=" _No removed dependencies_"
10587 fi
106-
88+
10789 echo "new_deps=$new_count" >> $GITHUB_OUTPUT
10890 echo "changed_deps=$changed_count" >> $GITHUB_OUTPUT
10991 echo "unchanged_deps=$unchanged_count" >> $GITHUB_OUTPUT
@@ -114,7 +96,7 @@ PYTHON_SCRIPT
11496 else
11597 echo "has_changes=false" >> $GITHUB_OUTPUT
11698 fi
117-
99+
118100 - name : Create Pull Request
119101 if : steps.check_changes.outputs.has_changes == 'true'
120102 uses : peter-evans/create-pull-request@v6
@@ -124,36 +106,36 @@ PYTHON_SCRIPT
124106 title : ' [Automated] Nightly Dependency Version Update - $(date +%Y-%m-%d)'
125107 body : |
126108 ## 🤖 Automated Dependency Version Update
127-
109+
128110 This PR contains the nightly dependency extraction results.
129-
111+
130112 ### 📊 Summary
131113 - **New Dependencies:** ${{ steps.check_changes.outputs.new_deps }}
132114 - **Changed Versions:** ${{ steps.check_changes.outputs.changed_deps }}
133115 - **Removed Dependencies:** ${{ steps.check_changes.outputs.removed_deps }}
134116 - **Unchanged:** ${{ steps.check_changes.outputs.unchanged_deps }}
135-
117+
136118 ### 🗑️ Removed Dependencies
137119 ${{ steps.check_changes.outputs.removed_list }}
138-
120+
139121 ### 📋 Files Updated
140122 - ✅ `.github/reports/dependency_versions_latest.csv` - Latest dependency snapshot
141123 - ✅ `.github/reports/unversioned_dependencies_latest.csv` - Unversioned deps report (if applicable)
142-
124+
143125 > **Note:** Timestamped versions are stored in GitHub Artifacts (90-day retention) to avoid repo clutter.
144-
126+
145127 ### ✔️ Review Checklist
146128 - [ ] Review new dependencies for security/licensing concerns
147129 - [ ] Check version changes for breaking updates
148130 - [ ] Review removed dependencies (intentional?)
149131 - [ ] Verify unversioned dependencies report
150132 - [ ] Update baseline count if increase is expected
151-
133+
152134 ---
153-
135+
154136 🔗 **Documentation:** [Dependency Extraction Guide](../docs/dependency_extraction.md)
155137 📦 **Artifacts:** Download timestamped CSVs from workflow run
156-
138+
157139 _Generated by nightly dependency extraction workflow_
158140 _Timestamp: ${{ env.TIMESTAMP }}_
159141 branch : automated/dependency-extraction-${{ github.run_number }}
@@ -162,7 +144,7 @@ PYTHON_SCRIPT
162144 automated
163145 dependencies
164146 documentation
165-
147+
166148 - name : Upload artifacts
167149 if : always()
168150 uses : actions/upload-artifact@v4
@@ -172,7 +154,7 @@ PYTHON_SCRIPT
172154 .github/reports/dependency_versions_*.csv
173155 .github/reports/unversioned_dependencies_*.csv
174156 retention-days : 90
175-
157+
176158 - name : Summary
177159 if : always()
178160 run : |
0 commit comments