fix: restore tools/build_patch.gd (accidentally deleted)

This commit is contained in:
2026-06-18 15:26:29 +08:00
parent 53e2d11e05
commit 231b06a01d
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/env -S godot --headless -s
extends MainLoop
func _initialize():
print("--- Starting Automated Patch Build ---")
var output_file = "patch.pck"
var changed_files_txt = "changed_files.txt"
if not FileAccess.file_exists(changed_files_txt):
print("ERROR: missing changed_files.txt. Cannot build patch.")
return
var pck_packer = PCKPacker.new()
var err = pck_packer.pck_start(output_file)
if err != OK:
print("ERROR: Could not start PCK file: ", output_file)
return
var file = FileAccess.open(changed_files_txt, FileAccess.READ)
var count = 0
while not file.eof_reached():
var line = file.get_line().strip_edges()
if line.is_empty(): continue
var res_path = "res://" + line
# Include automatically compiled scripts for GDScript
if line.ends_with(".gd"):
var remap_path = res_path.replace(".gd", ".gdc")
if FileAccess.file_exists(remap_path):
pck_packer.add_file(res_path, remap_path)
else:
pck_packer.add_file(res_path, res_path)
count += 1
print("Adding (Script): ", res_path)
elif FileAccess.file_exists(res_path):
print("Adding to patch: ", res_path)
pck_packer.add_file(res_path, res_path)
count += 1
else:
print("Warning: Changed file not found or Is Directory, skipping: ", res_path)
# Always package our version/changelog list so clients see the new changelog
var version_manifest = "res://assets/data/version.json"
pck_packer.add_file(version_manifest, version_manifest)
print("Adding Version Manifest: ", version_manifest)
pck_packer.flush(true)
print("--- Patch Build Complete! Packed %d files into %s ---" % [count + 1, output_file])
func _process(_delta: float) -> bool:
return true # True tells Godot to gracefully shut down the engine now!