name: Minor Patch Diff Workflow on: workflow_dispatch: jobs: check-and-diff: runs-on: ubuntu-latest permissions: contents: write pull-requests: write steps: - name: Checkout uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: '3.12' cache: 'pip' - name: Fetch Patch Info and Update Versions id: versions run: python automation/ffxiv_info.py >> $GITHUB_OUTPUT - name: Download Latest ffxiv_dx11.exe if: steps.versions.outputs.is_new == 'true' run: python automation/download_exe.py --output latest/ - name: Download Previous ffxiv_dx11.exe if: steps.versions.outputs.is_new == 'true' run: python automation/download_exe.py --version "${{ steps.versions.outputs.thaliak_version_prev }}" --output previous/ - name: Install Analysis Tools if: steps.versions.outputs.is_new == 'true' run: | curl -L -o radare2.deb https://github.com/radareorg/radare2/releases/download/6.1.0/radare2_6.1.0_amd64.deb sudo dpkg -i radare2.deb || sudo apt-get install -f -y rm radare2.deb - name: Install Python Dependencies if: steps.versions.outputs.is_new == 'true' run: | pip install -r requirements-vtable.txt - name: Run Diff if: steps.versions.outputs.is_new == 'true' run: | LATEST_EXE=$(find latest -name "ffxiv_dx11.exe" | head -n 1) PREVIOUS_EXE=$(find previous -name "ffxiv_dx11.exe" | head -n 1) cp "$LATEST_EXE" "ffxiv_dx11.${{ steps.versions.outputs.retail_new }}.exe" cp "$PREVIOUS_EXE" "ffxiv_dx11.${{ steps.versions.outputs.retail_prev }}.exe" # Run the diffing process and capture JSON output python vtable_diff.py "ffxiv_dx11.${{ steps.versions.outputs.retail_prev }}.exe" "ffxiv_dx11.${{ steps.versions.outputs.retail_new }}.exe" > "diffs/${{ steps.versions.outputs.retail_new }}.diff.json" - name: Upload Results if: steps.versions.outputs.is_new == 'true' uses: actions/upload-artifact@v3 with: name: diff path: | diffs/${{ steps.versions.outputs.retail_new }}.diff.json - name: Commit and push update branch if: steps.versions.outputs.is_new == 'true' id: commit run: | BRANCH="auto-update-${{ steps.versions.outputs.retail_new }}" echo "branch=$BRANCH" >> "$GITHUB_OUTPUT" git config user.name "gitea-actions" git config user.email "actions@gitea.lozy.pink" git checkout -b "$BRANCH" git add -A git commit -m "Update for ${{ steps.versions.outputs.retail_new }} (${{ steps.versions.outputs.thaliak_version_new }})" git push origin "$BRANCH" --force - name: Open Pull Request (Gitea API) if: steps.versions.outputs.is_new == 'true' run: | curl -sf -X POST \ -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H "Content-Type: application/json" \ -d '{"title":"Update for ${{ steps.versions.outputs.retail_new }} (${{ steps.versions.outputs.thaliak_version_new }})","head":"${{ steps.commit.outputs.branch }}","base":"main","body":"Automated opcode diff update for retail version ${{ steps.versions.outputs.retail_new }} (${{ steps.versions.outputs.thaliak_version_new }})."}' \ "https://gitea.lozy.pink/api/v1/repos/lozy360/opcodediff/pulls"