Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 49 additions & 19 deletions addons/godobuf/godobuf_cmdln.gd
Original file line number Diff line number Diff line change
Expand Up @@ -33,25 +33,64 @@ 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():
if argument.find("=") > -1:
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"):
Expand All @@ -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()