From 4901cbeb61f16f1758f1793f5361da39e84a1508 Mon Sep 17 00:00:00 2001 From: Dusk-92 Date: Mon, 24 Aug 2026 10:37:13 +0200 Subject: [PATCH] Add temporary Turtle vendor DB generator --- .github/workflows/temp-vendor-values.yml | 96 ++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 .github/workflows/temp-vendor-values.yml diff --git a/.github/workflows/temp-vendor-values.yml b/.github/workflows/temp-vendor-values.yml new file mode 100644 index 0000000..1bb0a0e --- /dev/null +++ b/.github/workflows/temp-vendor-values.yml @@ -0,0 +1,96 @@ +name: Temporary Vendor Values DB Generator + +on: + push: + branches: [classicapi-enhanced] + paths: + - '.github/workflows/temp-vendor-values.yml' + +permissions: + contents: write + +jobs: + generate: + if: github.actor != 'github-actions[bot]' + runs-on: ubuntu-latest + steps: + - name: Checkout ShaguTweaks + uses: actions/checkout@v4 + with: + ref: classicapi-enhanced + + - name: Checkout Tortoise DB Viewer + uses: actions/checkout@v4 + with: + repository: Xian55/tortoise-db-viewer + path: .vendor-build/viewer + + - name: Checkout Turtle WoW SQL + uses: actions/checkout@v4 + with: + repository: Penqle/tortoise-wow + path: .vendor-build/server + sparse-checkout: | + sql/base + sql/database_updates + sparse-checkout-cone-mode: false + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Install viewer dependencies + working-directory: .vendor-build/viewer + run: bun install + + - name: Build migrated Turtle SQLite + working-directory: .vendor-build/viewer + env: + SQL_DIR: ${{ github.workspace }}/.vendor-build/server/sql/base + run: bun scripts/build-db.mjs + + - name: Regenerate Vendor Values table + shell: python + run: | + import re + import sqlite3 + from pathlib import Path + + db_path = Path('.vendor-build/viewer/public/data/tortoise.sqlite') + target = Path('mods/vendor-values.lua') + + con = sqlite3.connect(db_path) + rows = con.execute( + 'SELECT entry, sell_price FROM items WHERE sell_price > 0 ORDER BY entry' + ).fetchall() + con.close() + + entries = [f'[{item_id}]={price}' for item_id, price in rows] + lines = [' ' + ', '.join(entries[i:i + 6]) + ',' for i in range(0, len(entries), 6)] + block = ( + '-- Vendor prices generated from Penqle/tortoise-wow through the migrated Tortoise DB Viewer build.\n' + '-- Values are per-item vendor sell prices in copper; unsellable (0-price) items are omitted.\n' + 'local data = {\n' + '\n'.join(lines) + '\n}\n\n' + ) + + text = target.read_text(encoding='utf-8') + pattern = r'(?:-- Vendor prices generated.*?\n-- Values are per-item.*?\n)?local data = \{\n.*?\n\}\n\n' + new_text, count = re.subn(pattern, block, text, count=1, flags=re.S) + if count != 1: + raise SystemExit(f'Could not replace Vendor Values data table (matches={count})') + + target.write_text(new_text, encoding='utf-8', newline='\n') + print(f'Generated {len(rows)} sellable item prices') + print(f'Highest item ID: {rows[-1][0] if rows else 0}') + print(f'File size: {target.stat().st_size} bytes') + + - name: Commit generated database + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add mods/vendor-values.lua + git diff --cached --stat + git diff --cached --quiet && exit 0 + git commit -m "Update Vendor Values database for Turtle WoW 1.18.1" + git push origin HEAD:classicapi-enhanced