From 6ab8bf9fb9bf5311b932af97041a43ec67855874 Mon Sep 17 00:00:00 2001 From: Valentin Chaboche Date: Thu, 8 Jun 2023 11:53:25 +0200 Subject: [PATCH 1/2] EVM/Proxy: help command --- src/bin_evm_proxy/evm_proxy.ml | 61 +++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/src/bin_evm_proxy/evm_proxy.ml b/src/bin_evm_proxy/evm_proxy.ml index 95f81b8a43f0..73680cb768b9 100644 --- a/src/bin_evm_proxy/evm_proxy.ml +++ b/src/bin_evm_proxy/evm_proxy.ml @@ -196,38 +196,53 @@ let commands = [main_command] let global_options = Tezos_clic.no_options +let executable_name = Filename.basename Sys.executable_name + +let argv () = Array.to_list Sys.argv |> List.tl |> Stdlib.Option.get + let dispatch initial_ctx args = let open Lwt_result_syntax in + let commands = + Tezos_clic.add_manual + ~executable_name + ~global_options + (if Unix.isatty Unix.stdout then Tezos_clic.Ansi else Tezos_clic.Plain) + Format.std_formatter + commands + in let* ctx, remaining_args = Tezos_clic.parse_global_options global_options initial_ctx args in Tezos_clic.dispatch commands ctx remaining_args -let () = - ignore - Tezos_clic.( - setup_formatter - Format.std_formatter - (if Unix.isatty Unix.stdout then Ansi else Plain) - Short) ; - let args = Array.to_list Sys.argv |> List.tl |> Option.value ~default:[] in - let result = Lwt_main.run (dispatch () args) in - match result with +let handle_error = function | Ok _ -> () | Error [Tezos_clic.Version] -> let version = Tezos_version_value.Bin_version.version_string in Format.printf "%s\n" version ; exit 0 - | Error e -> - Format.eprintf - "%a\n%!" - Tezos_clic.( - fun ppf errs -> - pp_cli_errors - ppf - ~executable_name:"evm_proxy" - ~global_options:no_options - ~default:pp - errs) - e ; - exit 1 + | Error [Tezos_clic.Help command] -> + Tezos_clic.usage + Format.std_formatter + ~executable_name + ~global_options + (match command with None -> [] | Some c -> [c]) ; + Stdlib.exit 0 + | Error errs -> + Tezos_clic.pp_cli_errors + Format.err_formatter + ~executable_name + ~global_options + ~default:Error_monad.pp + errs ; + Stdlib.exit 1 + +let () = + let _ = + Tezos_clic.( + setup_formatter + Format.std_formatter + (if Unix.isatty Unix.stdout then Ansi else Plain) + Short) + in + Lwt_main.run (dispatch () (argv ())) |> handle_error -- GitLab From 94a13efb136e2e91eed86afa4f0386c670658520 Mon Sep 17 00:00:00 2001 From: Valentin Chaboche Date: Fri, 9 Jun 2023 13:16:11 +0200 Subject: [PATCH 2/2] EVM/Proxy: rollup node endpoint as parameter --- src/bin_evm_proxy/evm_proxy.ml | 24 ++++++++++------------- tezt/lib_tezos/evm_proxy_server.ml | 31 +++++++++++++++--------------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/src/bin_evm_proxy/evm_proxy.ml b/src/bin_evm_proxy/evm_proxy.ml index 73680cb768b9..d2abb1f53891 100644 --- a/src/bin_evm_proxy/evm_proxy.ml +++ b/src/bin_evm_proxy/evm_proxy.ml @@ -47,10 +47,7 @@ let make_config ?rpc_addr ?rpc_port ?debug ~rollup_node_endpoint () = rpc_addr = Option.value ~default:default_config.rpc_addr rpc_addr; rpc_port = Option.value ~default:default_config.rpc_port rpc_port; debug = Option.value ~default:default_config.debug debug; - rollup_node_endpoint = - Option.value - ~default:default_config.rollup_node_endpoint - rollup_node_endpoint; + rollup_node_endpoint; } let install_finalizer server = @@ -165,13 +162,12 @@ let rpc_port_arg = ~doc:"The EVM proxy server rpc port." Params.int -let rollup_node_endpoint_arg = - Tezos_clic.arg - ~long:"rollup-node-endpoint" - ~placeholder:"ADDR:PORT" - ~doc: - "The smart rollup node endpoint address the proxy server will \ - communicate with, or [mockup] if you want to use mock values." +let rollup_node_endpoint_param = + Tezos_clic.param + ~name:"rollup-node-endpoint" + ~desc: + "The smart rollup node endpoint address (as ADDR:PORT) the proxy server \ + will communicate with, or [mockup] if you want to use mock values." Params.rollup_node_endpoint let main_command = @@ -179,9 +175,9 @@ let main_command = let open Lwt_result_syntax in command ~desc:"Start the RPC server" - (args3 rpc_addr_arg rpc_port_arg rollup_node_endpoint_arg) - (prefixes ["run"] @@ stop) - (fun (rpc_addr, rpc_port, rollup_node_endpoint) () -> + (args2 rpc_addr_arg rpc_port_arg) + (prefixes ["run"; "with"; "endpoint"] @@ rollup_node_endpoint_param @@ stop) + (fun (rpc_addr, rpc_port) rollup_node_endpoint () -> let*! () = Tezos_base_unix.Internal_event_unix.init () in let*! () = Internal_event.Simple.emit Event.event_starting () in let config = make_config ?rpc_addr ?rpc_port ~rollup_node_endpoint () in diff --git a/tezt/lib_tezos/evm_proxy_server.ml b/tezt/lib_tezos/evm_proxy_server.ml index a7f88ccc613a..01283f25ac0b 100644 --- a/tezt/lib_tezos/evm_proxy_server.ml +++ b/tezt/lib_tezos/evm_proxy_server.ml @@ -45,17 +45,12 @@ include Daemon.Make (Parameters) let path = "./octez-evm-proxy-server" -let connection_arguments ?rpc_addr ?rpc_port rollup_node_endpoint = +let connection_arguments ?rpc_addr ?rpc_port () = let open Cli_arg in let rpc_port = match rpc_port with None -> Port.fresh () | Some port -> port in - ( [ - "--rollup-node-endpoint"; - rollup_node_endpoint; - "--rpc-port"; - string_of_int rpc_port; - ] + ( ["--rpc-port"; string_of_int rpc_port] @ optional_arg "--rpc-addr" Fun.id rpc_addr, Option.value ~default:"127.0.0.1" rpc_addr, rpc_port ) @@ -95,13 +90,8 @@ let wait_for_ready proxy_server = check_event proxy_server event_ready_name promise let create ?runner ?rpc_addr ?rpc_port rollup_node = - let rollup_node_endpoint = - match rollup_node with - | None -> "mockup" - | Some rollup_node -> Sc_rollup_node.endpoint rollup_node - in let arguments, rpc_addr, rpc_port = - connection_arguments ?rpc_addr ?rpc_port rollup_node_endpoint + connection_arguments ?rpc_addr ?rpc_port () in let proxy_server = create @@ -117,12 +107,19 @@ let mockup ?runner ?rpc_addr ?rpc_port () = let create ?runner ?rpc_addr ?rpc_port rollup_node = create ?runner ?rpc_addr ?rpc_port (Some rollup_node) +let rollup_node_endpoint proxy_server = + match proxy_server.persistent_state.rollup_node with + | Some rollup_node -> Sc_rollup_node.endpoint rollup_node + | None -> "mockup" + let run proxy_server = let* () = run proxy_server {ready = false} - (["run"] @ proxy_server.persistent_state.arguments) + (["run"; "with"; "endpoint"] + @ [rollup_node_endpoint proxy_server] + @ proxy_server.persistent_state.arguments) in let* () = wait_for_ready proxy_server in unit @@ -131,7 +128,11 @@ let spawn_command proxy_server args = Process.spawn ?runner:proxy_server.persistent_state.runner path @@ args let spawn_run proxy_server = - spawn_command proxy_server (["run"] @ proxy_server.persistent_state.arguments) + spawn_command + proxy_server + (["run"; "with"; "endpoint"] + @ [rollup_node_endpoint proxy_server] + @ proxy_server.persistent_state.arguments) let endpoint (proxy_server : t) = Format.sprintf -- GitLab