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