diff --git a/src/Main.gd b/src/Main.gd index 71e6bd3..ac1cba1 100644 --- a/src/Main.gd +++ b/src/Main.gd @@ -11,14 +11,19 @@ const BATCH_MODE_SUPPORTED_EXTS = [ func show_help(): print( "Usage:\n\n", - "./Fragmented cmd --shader PATH [--load-image PATH]\n\n", - " --shader PATH The path to the shader\n", - " --output PATH Where to write the resulting image to.\n", - " In batch mode, this must be a folder.\n", - " --load-image PATH The path to the image. This will overwrite the\n", - " load directive of the shader file.\n", - " Passing a folder activates batch mode.\n", - " (optional)\n") + "./Fragmented \n\n", + "Commands:\n\n", + " help\n\n", + " | Shows this help text.\n\n", + " apply --shader PATH [--load-image PATH]\n\n", + " | Applies a shader file.\n\n", + " --shader PATH The path to the shader\n", + " --output PATH Where to write the resulting image to.\n", + " In batch mode, this must be a folder.\n", + " --load-image PATH The path to the image. This will overwrite the\n", + " load directive of the shader file.\n", + " Passing a folder activates batch mode.\n", + " (optional)\n") func parse_custom_cmdline(args: PackedStringArray): var kwargs: Dictionary = {"--shader": null, "--output": null, "--load-image": null} @@ -41,78 +46,88 @@ func cli_handle_errors(errors: Array) -> int: printerr(e) return n_errors -func _ready(): - var args = OS.get_cmdline_args() - if "cmd" in args: # commandline interface - if "help" in args: - show_help() - get_tree().quit(1) - return - var kwargs: Dictionary = parse_custom_cmdline(args) - if kwargs["--shader"] == null or kwargs["--output"] == null: - show_help() - get_tree().quit(1) - return - var batch_mode = false - var load_image_dir: DirAccess - if kwargs["--load-image"] != null: - load_image_dir = DirAccess.open(kwargs["--load-image"]) - if load_image_dir != null: - # batch mode - if DirAccess.open(kwargs["--output"]) == null: - printerr("If --load-image is a directory, --output has to be one too.\n") - show_help() +func cli(args: PackedStringArray): + print( + "~ Fragmented CLI ~\n", + "-================-\n") + if "help" in args: + show_help() + get_tree().quit(1) + return + var kwargs: Dictionary = parse_custom_cmdline(args) + if kwargs["--shader"] == null or kwargs["--output"] == null: + show_help() + get_tree().quit(1) + return + var batch_mode = false + var load_image_dir: DirAccess + if kwargs["--load-image"] != null: + load_image_dir = DirAccess.open(kwargs["--load-image"]) + if load_image_dir != null: + # batch mode + if DirAccess.open(kwargs["--output"]) == null: + printerr("If --load-image is a directory, --output has to be one too.\n") + show_help() + get_tree().quit(1) + return + else: + batch_mode = true + # + Filesystem.load_shader(kwargs["--shader"]) + # + if batch_mode: + var in_dir_path = load_image_dir.get_current_dir() + var out_dir_path: String = kwargs["--output"].rstrip("/") + for f in load_image_dir.get_files(): + var supported = false + for e in BATCH_MODE_SUPPORTED_EXTS: + if f.ends_with(e): + supported = true + break + if supported: + f = in_dir_path + "/" + f + print(f) + var errors = await $Compositor.update(f) + if cli_handle_errors(errors) == 0: + var filename = out_dir_path + "/" + f.substr(f.rfind("/"), -1) + Filesystem.save_result(filename) + else: get_tree().quit(1) return - else: - batch_mode = true - # - Filesystem.load_shader(kwargs["--shader"]) - # - if batch_mode: - var in_dir_path = load_image_dir.get_current_dir() - var out_dir_path: String = kwargs["--output"].rstrip("/") - for f in load_image_dir.get_files(): - var supported = false - for e in BATCH_MODE_SUPPORTED_EXTS: - if f.ends_with(e): - supported = true - break - if supported: - f = in_dir_path + "/" + f - print(f) - var errors = await $Compositor.update(f) - if cli_handle_errors(errors) == 0: - var filename = out_dir_path + "/" + f.substr(f.rfind("/"), -1) - Filesystem.save_result(filename) - else: - get_tree().quit(1) - return + get_tree().quit(0) + else: + var errors = [] + if kwargs["--load-image"] == null: + errors = await $Compositor.update() + else: + errors = await $Compositor.update(kwargs["--load-image"]) + if cli_handle_errors(errors) == 0: + Filesystem.save_result(kwargs["--output"]) get_tree().quit(0) else: - var errors = [] - if kwargs["--load-image"] == null: - errors = await $Compositor.update() - else: - errors = await $Compositor.update(kwargs["--load-image"]) - if cli_handle_errors(errors) == 0: - Filesystem.save_result(kwargs["--output"]) - get_tree().quit(0) - else: - get_tree().quit(1) + get_tree().quit(1) + +func prepare_gui(): + update_title() + # position windows + get_window().position = Vector2i( + editor_window.position.x + editor_window.size.x + 50, + editor_window.position.y) + get_window().min_size = Vector2i(400, 400) + editor_window.min_size = Vector2i(560, 400) + editor_window.show() + # Load last opened file + Filesystem.remember_last_opened_file() + if Filesystem.last_shader_savepath != "": + ui_container.get_node("Editor")._on_open_shader_dialog_file_selected(Filesystem.last_shader_savepath) + +func _ready(): + var args = OS.get_cmdline_args() + if len(args) > 0 and args[0] in ["apply", "help"]: + # use the commandline interface + cli(args) else: - update_title() - # position windows - get_window().position = Vector2i( - editor_window.position.x + editor_window.size.x + 50, - editor_window.position.y) - get_window().min_size = Vector2i(400, 400) - editor_window.min_size = Vector2i(560, 400) - editor_window.show() - # Load last opened file - Filesystem.remember_last_opened_file() - if Filesystem.last_shader_savepath != "": - ui_container.get_node("Editor")._on_open_shader_dialog_file_selected(Filesystem.last_shader_savepath) + prepare_gui() func update_title(current_file: String = ""): if current_file == "":