From 9f6f3ac7a08ec52b5f5391bc50f51d025f6105d2 Mon Sep 17 00:00:00 2001 From: Simon Kerr Date: Thu, 14 May 2026 16:40:44 +1000 Subject: [PATCH] Batch convert on the command line --- addons/godobuf/godobuf_cmdln.gd | 68 ++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 19 deletions(-) diff --git a/addons/godobuf/godobuf_cmdln.gd b/addons/godobuf/godobuf_cmdln.gd index 98d4f38..3720b94 100644 --- a/addons/godobuf/godobuf_cmdln.gd +++ b/addons/godobuf/godobuf_cmdln.gd @@ -33,11 +33,37 @@ extends SceneTree var Parser = preload("res://addons/godobuf/parser.gd") var Util = preload("res://addons/godobuf/godobuf_util.gd") +var godobuf_core_path = "res://addons/godobuf/godobuf_core.gd" func error(msg : String): push_error(msg) quit() +func process_batch(input_batch_path, output_batch_path, message_prefix, should_prefix_enums, custom_class_name): + print("Input batch path: " + input_batch_path) + print("Output batch path: " + output_batch_path) + var parser = Parser.new() + if parser.work_directory(input_batch_path, output_batch_path, \ + godobuf_core_path, \ + message_prefix, should_prefix_enums, custom_class_name): + print("Compiled batch from '", input_batch_path, "' to '", output_batch_path, "'.") + else: + error("Compilation failed.") + +func process_file(input_file_name, output_file_name, message_prefix, should_prefix_enums, custom_class_name): + print("Input file: " + input_file_name) + print("Output file: " + output_file_name) + var file = FileAccess.open(input_file_name, FileAccess.READ) + if file == null: + error("File: '" + input_file_name + "' not found.") + var parser = Parser.new() + if parser.work(Util.extract_dir(input_file_name), Util.extract_filename(input_file_name), \ + output_file_name, godobuf_core_path, \ + message_prefix, should_prefix_enums, custom_class_name): + print("Compiled '", input_file_name, "' to '", output_file_name, "'.") + else: + error("Compilation failed.") + func _init(): var arguments = {} for argument in OS.get_cmdline_args(): @@ -45,13 +71,26 @@ func _init(): var key_value = argument.split("=") arguments[key_value[0].lstrip("--")] = key_value[1] - if !arguments.has("input"): - error("Missing required argument: input") - var input_file_name = arguments["input"] - - if !arguments.has("output"): - error("Missing required argument: output") - var output_file_name = arguments["output"] + var batch_mode = false + var input_batch_path : String = "" + var output_batch_path : String = "" + var input_file_name : String = "" + var output_file_name : String = "" + + if arguments.has("input-batch"): + batch_mode = true + input_batch_path = arguments["input-batch"] + if !arguments.has("output-batch"): + error("Missing required argument: output") + output_batch_path = arguments["output-batch"] + else: + batch_mode = false + if !arguments.has("input"): + error("Missing required argument: input") + input_file_name = arguments["input"] + if !arguments.has("output"): + error("Missing required argument: output") + output_file_name = arguments["output"] var message_prefix = "" if arguments.has("prefix"): @@ -78,18 +117,9 @@ func _init(): if !custom_class_name.is_valid_identifier(): error("The provided class_name is not a valid identifier: " + custom_class_name) - var file = FileAccess.open(input_file_name, FileAccess.READ) - if file == null: - error("File: '" + input_file_name + "' not found.") - - var parser = Parser.new() - - if parser.work(Util.extract_dir(input_file_name), Util.extract_filename(input_file_name), \ - output_file_name, "res://addons/godobuf/godobuf_core.gd", \ - message_prefix, should_prefix_enums, custom_class_name): - - print("Compiled '", input_file_name, "' to '", output_file_name, "'.") + if batch_mode: + process_batch(input_batch_path, output_batch_path, message_prefix, should_prefix_enums, custom_class_name) else: - error("Compilation failed.") + process_file(input_file_name, output_file_name, message_prefix, should_prefix_enums, custom_class_name) quit()