37 lines
1 KiB
OCaml
37 lines
1 KiB
OCaml
open Import
|
|
|
|
let build ~wait targets =
|
|
let targets =
|
|
List.map targets ~f:(fun target ->
|
|
let sexp = Dune_lang.Dep_conf.encode target in
|
|
Dune_lang.to_string sexp)
|
|
in
|
|
Rpc_common.fire_request ~name:"build" ~wait Dune_rpc_impl.Decl.build targets
|
|
;;
|
|
|
|
let term =
|
|
let name_ = Arg.info [] ~docv:"TARGET" in
|
|
let+ (builder : Common.Builder.t) = Common.Builder.term
|
|
and+ wait = Rpc_common.wait_term
|
|
and+ targets = Arg.(value & pos_all string [] name_) in
|
|
Rpc_common.client_term builder
|
|
@@ fun () ->
|
|
let open Fiber.O in
|
|
let+ response =
|
|
Rpc_common.fire_request ~name:"build" ~wait Dune_rpc_impl.Decl.build targets
|
|
in
|
|
match response with
|
|
| Error (error : Dune_rpc.Response.Error.t) ->
|
|
Printf.eprintf "Error: %s\n%!" (Dyn.to_string (Dune_rpc.Response.Error.to_dyn error))
|
|
| Ok Success -> print_endline "Success"
|
|
| Ok (Failure _) -> print_endline "Failure"
|
|
;;
|
|
|
|
let info =
|
|
let doc =
|
|
"build a given target (requires dune to be running in passive watching mode)"
|
|
in
|
|
Cmd.info "build" ~doc
|
|
;;
|
|
|
|
let cmd = Cmd.v info term
|