70 lines
2.2 KiB
YAML
70 lines
2.2 KiB
YAML
name: fetch upstream mod changes
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "13,43 * * * *"
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
replace-mods:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Clone Gitea repo (skip LFS smudge)
|
|
run: |
|
|
rm -rf repo /tmp/upstream
|
|
GIT_LFS_SKIP_SMUDGE=1 \
|
|
git clone ssh://git@smallgit.dasguney.com:2222/skyline/balatro-mod-index.git repo
|
|
|
|
- name: Configure LFS and fetch objects
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GT_TOKEN }}
|
|
run: |
|
|
cd repo
|
|
|
|
# Auth for Git + LFS
|
|
printf "machine smallgit.dasguney.com\nlogin skyline\npassword %s\n" "$GITEA_TOKEN" > ~/.netrc
|
|
chmod 600 ~/.netrc
|
|
|
|
# Force LFS to use direct Gitea endpoint (no nginx)
|
|
git config lfs.url "http://smallgit.dasguney.com:3000/skyline/balatro-mod-index.git/info/lfs"
|
|
git config lfs."http://smallgit.dasguney.com:3000/skyline/balatro-mod-index.git/info/lfs".locksverify false
|
|
|
|
# Install hooks and explicitly fetch LFS data
|
|
git lfs install --local
|
|
git lfs fetch origin
|
|
git lfs checkout
|
|
|
|
- name: Clone upstream GitHub repo
|
|
run: |
|
|
git clone https://github.com/skyline69/balatro-mod-index.git /tmp/upstream
|
|
|
|
- name: Replace mods directory
|
|
run: |
|
|
cd repo
|
|
rm -rf mods
|
|
cp -a /tmp/upstream/mods ./mods
|
|
|
|
- name: Append last-updated timestamp
|
|
run: |
|
|
cd repo
|
|
TIME_NOW=$(date +"%s")
|
|
git diff -z --name-only | grep -z meta.json | while IFS='' read -r -d '' file; do
|
|
jq --indent 2 '."last-updated" |= (. // '"$TIME_NOW"')' "$file" | sponge "$file"
|
|
done
|
|
|
|
- name: Commit and push
|
|
run: |
|
|
cd repo
|
|
|
|
git config user.name "jim[bot]"
|
|
git config user.email "jim[bot]@users.noreply.github.com"
|
|
|
|
# Use direct Gitea HTTP endpoint for push
|
|
git remote set-url origin http://smallgit.dasguney.com:3000/skyline/balatro-mod-index.git
|
|
|
|
git add mods
|
|
if git commit -m "fetch upstream mod changes ($(date --utc +%Y%m%d_%H%M%SZ))"; then
|
|
git push origin main
|
|
fi
|