Update package version to 0.0.1-beta, add new dependencies including ExcelJS, and refactor export utilities to utilize ExcelJS for Excel file generation. Enhance component JSON files with vendor information for improved asset management.

This commit is contained in:
2026-01-07 02:12:12 +00:00
parent 4bc0fd203f
commit 97d2b66f02
33 changed files with 4394 additions and 1088 deletions

176
.github/workflows/check-vendor.yml vendored Normal file
View File

@@ -0,0 +1,176 @@
name: Check Vendor Updates
on:
schedule:
# Run daily at 2 AM UTC
- cron: '0 2 * * *'
workflow_dispatch:
# Allow manual triggering
jobs:
check-vendor:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install dependencies
run: |
cd scripts
pip install -r requirements.txt
- name: Generate manifest from site data
run: |
python scripts/generate_manifest_from_site.py \
--site-dir website/src/data/components \
--manifest manifest/vendor_manifest.json
- name: Check for updates
id: check-updates
env:
GITHUB_API_TOKEN: ${{ secrets.GITHUB_API_TOKEN }}
run: |
python scripts/check_updates.py \
--manifest manifest/vendor_manifest.json \
--output report.json || true
continue-on-error: true
- name: Read update report
id: read-report
if: always()
run: |
if [ -f report.json ]; then
OUT_OF_DATE=$(python -c "import json; r=json.load(open('report.json')); print(r.get('out_of_date', 0))")
echo "out_of_date=$OUT_OF_DATE" >> $GITHUB_OUTPUT
echo "has_updates=$([ $OUT_OF_DATE -gt 0 ] && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
else
echo "out_of_date=0" >> $GITHUB_OUTPUT
echo "has_updates=false" >> $GITHUB_OUTPUT
fi
- name: Get out-of-date entry IDs
id: get-entries
if: steps.read-report.outputs.has_updates == 'true'
run: |
python -c "
import json
with open('report.json') as f:
report = json.load(f)
entries = [e['id'] for e in report['entries'] if e.get('status') == 'out-of-date']
entry_ids = ','.join(entries)
print(f'entry_ids={entry_ids}')
" >> $GITHUB_OUTPUT || echo "entry_ids=" >> $GITHUB_OUTPUT
- name: Create update branch
if: steps.read-report.outputs.has_updates == 'true'
run: |
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
ENTRY_IDS=$(echo "${{ steps.get-entries.outputs.entry_ids }}" | tr ',' '-' | cut -c1-50)
BRANCH_NAME="vendor-update/${TIMESTAMP}-${ENTRY_IDS}"
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git checkout -b "$BRANCH_NAME"
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
- name: Update vendored files
if: steps.read-report.outputs.has_updates == 'true'
env:
GITHUB_API_TOKEN: ${{ secrets.GITHUB_API_TOKEN }}
run: |
ENTRY_IDS="${{ steps.get-entries.outputs.entry_ids }}"
for entry_id in $(echo "$ENTRY_IDS" | tr ',' ' '); do
echo "Updating entry: $entry_id"
python scripts/vendor_update.py \
--manifest manifest/vendor_manifest.json \
--entry "$entry_id" \
--sync-site
done
- name: Run site build (if available)
if: steps.read-report.outputs.has_updates == 'true'
run: |
if [ -f website/package.json ]; then
cd website
npm ci || npm install
npm run build || echo "Build failed but continuing..."
else
echo "No website build step found, skipping..."
fi
- name: Commit and push changes
if: steps.read-report.outputs.has_updates == 'true'
run: |
git add manifest/vendor_manifest.json vendor/ website/src/data/components/
if git diff --staged --quiet; then
echo "No changes to commit"
exit 0
fi
git commit -m "chore: update vendored files
Updated $(echo "${{ steps.get-entries.outputs.entry_ids }}" | tr ',' ' ' | wc -w) vendored file(s):
$(echo "${{ steps.get-entries.outputs.entry_ids }}" | tr ',' '\n' | sed 's/^/ - /')
Auto-generated by check-vendor workflow"
git push origin "$BRANCH_NAME"
- name: Create Pull Request
if: steps.read-report.outputs.has_updates == 'true'
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ env.BRANCH_NAME }}
title: "chore: Update vendored files"
body: |
## Vendor Update
This PR updates vendored files that have changed upstream.
**Updated entries:**
${{ steps.get-entries.outputs.entry_ids }}
**Report:**
- Total entries checked: ${{ steps.read-report.outputs.out_of_date }}
- Out-of-date entries: ${{ steps.read-report.outputs.out_of_date }}
### Changes
- Updated manifest with new commit SHAs
- Downloaded latest versions of changed files
- Synced vendor metadata to site component JSON files
### Verification
- [ ] Manifest updated correctly
- [ ] Files downloaded and checksums verified
- [ ] Site JSON files updated with vendor metadata
- [ ] Site build passes (if applicable)
---
*This PR was automatically created by the check-vendor workflow.*
labels: |
automated
vendor-update
draft: false
- name: Summary
if: always()
run: |
if [ "${{ steps.read-report.outputs.has_updates }}" == "true" ]; then
echo "## ✅ Updates Available" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Found ${{ steps.read-report.outputs.out_of_date }} out-of-date entries." >> $GITHUB_STEP_SUMMARY
echo "Created PR: vendor-update/${{ env.BRANCH_NAME }}" >> $GITHUB_STEP_SUMMARY
else
echo "## ✅ All Up-to-Date" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "All vendored files are up-to-date with upstream." >> $GITHUB_STEP_SUMMARY
fi