diff --git a/.gitea/workflows/minor_patch_diff.yml b/.gitea/workflows/minor_patch_diff.yml index 805eed6..066a26e 100644 --- a/.gitea/workflows/minor_patch_diff.yml +++ b/.gitea/workflows/minor_patch_diff.yml @@ -1 +1,80 @@ -bmFtZTogTWlub3IgUGF0Y2ggRGlmZiBXb3JrZmxvdwoKb246CiAgd29ya2Zsb3dfZGlzcGF0Y2g6Cgpqb2JzOgogIGNoZWNrLWFuZC1kaWZmOgogICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAogICAgcGVybWlzc2lvbnM6CiAgICAgIGNvbnRlbnRzOiB3cml0ZQogICAgICBwdWxsLXJlcXVlc3RzOiB3cml0ZQogICAgc3RlcHM6CiAgICAgIC0gbmFtZTogQ2hlY2tvdXQKICAgICAgICB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHY2CgogICAgICAtIG5hbWU6IFNldCB1cCBQeXRob24KICAgICAgICB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2NgogICAgICAgIHdpdGg6CiAgICAgICAgICBweXRob24tdmVyc2lvbjogJzMuMTInCiAgICAgICAgICBjYWNoZTogJ3BpcCcKCiAgICAgIC0gbmFtZTogRmV0Y2ggUGF0Y2ggSW5mbyBhbmQgVXBkYXRlIFZlcnNpb25zCiAgICAgICAgaWQ6IHZlcnNpb25zCiAgICAgICAgcnVuOiBweXRob24gYXV0b21hdGlvbi9mZnhpdl9pbmZvLnB5ID4+ICRHSVRIVUJfT1VUUFVUCgogICAgICAtIG5hbWU6IERvd25sb2FkIExhdGVzdCBmZnhpdl9keDExLmV4ZQogICAgICAgIGlmOiBzdGVwcy52ZXJzaW9ucy5vdXRwdXRzLmlzX25ldyA9PSAndHJ1ZScKICAgICAgICBydW46IHB5dGhvbiBhdXRvbWF0aW9uL2Rvd25sb2FkX2V4ZS5weSAtLW91dHB1dCBsYXRlc3QvCgogICAgICAtIG5hbWU6IERvd25sb2FkIFByZXZpb3VzIGZmeGl2X2R4MTEuZXhlCiAgICAgICAgaWY6IHN0ZXBzLnZlcnNpb25zLm91dHB1dHMuaXNfbmV3ID09ICd0cnVlJwogICAgICAgIHJ1bjogcHl0aG9uIGF1dG9tYXRpb24vZG93bmxvYWRfZXhlLnB5IC0tdmVyc2lvbiAiJHt7IHN0ZXBzLnZlcnNpb25zLm91dHB1dHMudGhhbGlha192ZXJzaW9uX3ByZXYgfX0iIC0tb3V0cHV0IHByZXZpb3VzLwoKICAgICAgLSBuYW1lOiBJbnN0YWxsIEFuYWx5c2lzIFRvb2xzCiAgICAgICAgaWY6IHN0ZXBzLnZlcnNpb25zLm91dHB1dHMuaXNfbmV3ID09ICd0cnVlJwogICAgICAgIHJ1bjogfAogICAgICAgICAgY3VybCAtTCAtbyByYWRhcmUyLmRlYiBodHRwczovL2dpdGh1Yi5jb20vcmFkYXJlb3JnL3JhZGFyZTIvcmVsZWFzZXMvZG93bmxvYWQvNi4xLjAvcmFkYXJlMl82LjEuMF9hbWQ2NC5kZWIKICAgICAgICAgIHN1ZG8gZHBrZyAtaSByYWRhcmUyLmRlYiB8fCBzdWRvIGFwdC1nZXQgaW5zdGFsbCAtZiAteQogICAgICAgICAgcm0gcmFkYXJlMi5kZWIKCiAgICAgIC0gbmFtZTogSW5zdGFsbCBQeXRob24gRGVwZW5kZW5jaWVzCiAgICAgICAgaWY6IHN0ZXBzLnZlcnNpb25zLm91dHB1dHMuaXNfbmV3ID09ICd0cnVlJwogICAgICAgIHJ1bjogfAogICAgICAgICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLXZ0YWJsZS50eHQKCiAgICAgIC0gbmFtZTogUnVuIERpZmYKICAgICAgICBpZjogc3RlcHMudmVyc2lvbnMub3V0cHV0cy5pc19uZXcgPT0gJ3RydWUnCiAgICAgICAgcnVuOiB8CiAgICAgICAgICBMQVRFU1RfRVhFPSQoZmluZCBsYXRlc3QgLW5hbWUgImZmeGl2X2R4MTEuZXhlIiB8IGhlYWQgLW4gMSkKICAgICAgICAgIFBSRVZJT1VTX0VYRT0kKGZpbmQgcHJldmlvdXMgLW5hbWUgImZmeGl2X2R4MTEuZXhlIiB8IGhlYWQgLW4gMSkKCiAgICAgICAgICBjcCAiJExBVEVTVF9FWEUiICJmZnhpdl9keDExLiR7eyBzdGVwcy52ZXJzaW9ucy5vdXRwdXRzLnJldGFpbF9uZXcgfX0uZXhlIgogICAgICAgICAgY3AgIiRQUkVWSU9VU19FWEUiICJmZnhpdl9keDExLiR7eyBzdGVwcy52ZXJzaW9ucy5vdXRwdXRzLnJldGFpbF9wcmV2IH19LmV4ZSIKCiAgICAgICAgICAjIFJ1biB0aGUgZGlmZmluZyBwcm9jZXNzIGFuZCBjYXB0dXJlIEpTT04gb3V0cHV0CiAgICAgICAgICBweXRob24gdnRhYmxlX2RpZmYucHkgImZmeGl2X2R4MTEuJHt7IHN0ZXBzLnZlcnNpb25zLm91dHB1dHMucmV0YWlsX3ByZXYgfX0uZXhlIiAiZmZ4aXZfZHgxMS4ke3sgc3RlcHMudmVyc2lvbnMub3V0cHV0cy5yZXRhaWxfbmV3IH19LmV4ZSIgPiAiZGlmZnMvJHt7IHN0ZXBzLnZlcnNpb25zLm91dHB1dHMucmV0YWlsX25ldyB9fS5kaWZmLmpzb24iCgogICAgICAtIG5hbWU6IFVwbG9hZCBSZXN1bHRzCiAgICAgICAgaWY6IHN0ZXBzLnZlcnNpb25zLm91dHB1dHMuaXNfbmV3ID09ICd0cnVlJwogICAgICAgIHVzZXM6IGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QHY2CiAgICAgICAgd2l0aDoKICAgICAgICAgIG5hbWU6IGRpZmYKICAgICAgICAgIHBhdGg6IHwKICAgICAgICAgICAgZGlmZnMvJHt7IHN0ZXBzLnZlcnNpb25zLm91dHB1dHMucmV0YWlsX25ldyB9fS5kaWZmLmpzb24KCiAgICAgIC0gbmFtZTogQ3JlYXRlIFB1bGwgUmVxdWVzdAogICAgICAgIGlmOiBzdGVwcy52ZXJzaW9ucy5vdXRwdXRzLmlzX25ldyA9PSAndHJ1ZScKICAgICAgICB1c2VzOiBwZXRlci1ldmFucy9jcmVhdGUtcHVsbC1yZXF1ZXN0QHY4CiAgICAgICAgd2l0aDoKICAgICAgICAgIHRva2VuOiAke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0KICAgICAgICAgIGNvbW1pdC1tZXNzYWdlOiAiVXBkYXRlIGZvciAke3sgc3RlcHMudmVyc2lvbnMub3V0cHV0cy5yZXRhaWxfbmV3IH19ICgke3sgc3RlcHMudmVyc2lvbnMub3V0cHV0cy50aGFsaWFrX3ZlcnNpb25fbmV3IH19KSIKICAgICAgICAgIHRpdGxlOiAiVXBkYXRlIGZvciAke3sgc3RlcHMudmVyc2lvbnMub3V0cHV0cy5yZXRhaWxfbmV3IH19ICgke3sgc3RlcHMudmVyc2lvbnMub3V0cHV0cy50aGFsaWFrX3ZlcnNpb25fbmV3IH19KSIKICAgICAgICAgIGJvZHk6IHwKICAgICAgICAgICAgVGhpcyBhdXRvbWF0aWMgdXBkYXRlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKICAgICAgICAgICAgLSBVcGRhdGVkIGBmZnhpdl92ZXJzaW9uc19nbG9iYWwuanNvbmAKICAgICAgICAgICAgLSBHZW5lcmF0ZWQgb3Bjb2RlIGRpZmYgZm9yIHJldGFpbCB2ZXJzaW9uICR7eyBzdGVwcy52ZXJzaW9ucy5vdXRwdXRzLnJldGFpbF9uZXcgfX0KICAgICAgICAgIGJyYW5jaDogImF1dG8tdXBkYXRlIgogICAgICAgICAgYnJhbmNoLXN1ZmZpeDogInNob3J0LWNvbW1pdC1oYXNoIgogICAgICAgICAgYmFzZTogIm1haW4iCiAgICAgICAgICBkZWxldGUtYnJhbmNoOiB0cnVlCgo= \ No newline at end of file +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@v6 + with: + name: diff + path: | + diffs/${{ steps.versions.outputs.retail_new }}.diff.json + + - name: Create Pull Request + if: steps.versions.outputs.is_new == 'true' + uses: peter-evans/create-pull-request@v8 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: "Update for ${{ steps.versions.outputs.retail_new }} (${{ steps.versions.outputs.thaliak_version_new }})" + title: "Update for ${{ steps.versions.outputs.retail_new }} (${{ steps.versions.outputs.thaliak_version_new }})" + body: | + This automatic update contains the following changes: + - Updated `ffxiv_versions_global.json` + - Generated opcode diff for retail version ${{ steps.versions.outputs.retail_new }} + branch: "auto-update" + branch-suffix: "short-commit-hash" + base: "main" + delete-branch: true