feat: update 2.1.9

This commit is contained in:
2026-04-29 01:36:49 +08:00
parent 1585b91509
commit 8a2f865ad8
76 changed files with 2628 additions and 39 deletions
+54 -12
View File
@@ -6,20 +6,34 @@ Auto-generates version.json by:
2. Auto-bumping the PATCH number
3. Reading player-friendly entries from CHANGELOG_DRAFT.md
4. Injecting them into version.json with a date stamp
5. Clearing the [NEXT] section in CHANGELOG_DRAFT.md
Run: python3 tools/generate_version_json.py
5. Updating version in export_presets.cfg export paths
6. Clearing the [NEXT] section in CHANGELOG_DRAFT.md
Usage:
python3 tools/generate_version_json.py # Full release (CI)
python3 tools/generate_version_json.py --local # Local: update versions but keep changelog
python3 tools/generate_version_json.py --skip-changelog # Skip changelog update
"""
import json
import re
import os
import sys
import argparse
from datetime import date
PROJECT_GODOT = "project.godot"
CHANGELOG_DRAFT = "CHANGELOG_DRAFT.md"
VERSION_JSON = "assets/data/version.json"
EXPORT_PRESETS = "export_presets.cfg"
MANIFEST_URL = "https://raw.githubusercontent.com/adtpdn/tekton-updates/main/latest/patch.pck"
# ─── Parse command line arguments ─────────────────────────────────────────────
parser = argparse.ArgumentParser(description="Generate version.json and update version numbers")
parser.add_argument("--local", action="store_true", help="Local mode: update version.json and export_presets but don't clear changelog")
parser.add_argument("--skip-changelog", action="store_true", help="Skip updating CHANGELOG_DRAFT.md")
args = parser.parse_args()
# ─── 1. Read current version from project.godot ──────────────────────────────
version_str = "2.1.5"
with open(PROJECT_GODOT, "r") as f:
@@ -113,16 +127,44 @@ with open(PROJECT_GODOT, "w", encoding="utf-8") as f:
print(f"[OK] Bumped project.godot -> {new_version}")
# ─── 7. Clear [NEXT] in CHANGELOG_DRAFT.md ───────────────────────────────────
archived_header = f"## [{new_version}] — {today}\n"
archived_entries = "".join(f"- {line}\n" for line in changelog_lines)
# ─── 7. Update version in export_presets.cfg ───────────────────────────────────
if os.path.exists(EXPORT_PRESETS):
with open(EXPORT_PRESETS, "r", encoding="utf-8") as f:
presets_content = f.read()
new_draft = "## [NEXT]\n\n" + archived_header + archived_entries
if remaining_lines:
new_draft += "\n" + "".join(remaining_lines)
# Replace version in desktop export paths (e.g., v2.1.7 -> v2.1.8)
# Desktop: tekton_armageddon_v2.1.7.exe/zip/x86_64
# Android: tekton-dash-armageddon-v.2.1.5.apk (different format)
desktop_pattern = r'tekton_armageddon_v\d+\.\d+\.\d+'
presets_content = re.sub(desktop_pattern, f'tekton_armageddon_v{new_version}', presets_content)
with open(CHANGELOG_DRAFT, "w", encoding="utf-8") as f:
f.write(new_draft)
# Also update Android version if needed (different format)
android_pattern = r'tekton-dash-armageddon-v\.\d+\.\d+\.\d+'
presets_content = re.sub(android_pattern, f'tekton-dash-armageddon-v.{new_version}', presets_content)
print(f"[OK] Cleared [NEXT] in {CHANGELOG_DRAFT}, archived as [{new_version}]")
print(f"\nDone! Push to patch-release to deploy v{new_version}.")
with open(EXPORT_PRESETS, "w", encoding="utf-8") as f:
f.write(presets_content)
print(f"[OK] Updated export paths in {EXPORT_PRESETS} -> v{new_version}")
else:
print(f"[WARN] {EXPORT_PRESETS} not found, skipping export path update")
# ─── 8. Clear [NEXT] in CHANGELOG_DRAFT.md ───────────────────────────────────
if not args.local and not args.skip_changelog:
archived_header = f"## [{new_version}] — {today}\n"
archived_entries = "".join(f"- {line}\n" for line in changelog_lines)
new_draft = "## [NEXT]\n\n" + archived_header + archived_entries
if remaining_lines:
new_draft += "\n" + "".join(remaining_lines)
with open(CHANGELOG_DRAFT, "w", encoding="utf-8") as f:
f.write(new_draft)
print(f"[OK] Cleared [NEXT] in {CHANGELOG_DRAFT}, archived as [{new_version}]")
else:
print(f"[INFO] Skipped updating {CHANGELOG_DRAFT} (--local or --skip-changelog mode)")
print(f"\nDone! Version bumped to v{new_version}.")
if args.local:
print("Local mode: Changelog not cleared. Run without --local to finalize release.")