This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
43
unikernel/duniverse/dune_/bin/describe/describe_location.ml
Normal file
43
unikernel/duniverse/dune_/bin/describe/describe_location.ml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
open! Import
|
||||
|
||||
let doc =
|
||||
"Print the path to the executable using the same resolution logic as [dune exec]."
|
||||
;;
|
||||
|
||||
let man =
|
||||
[ `S "DESCRIPTION"
|
||||
; `P
|
||||
{|$(b,dune describe location NAME) prints the path to the executable NAME using the same logic as:
|
||||
|}
|
||||
; `Pre "$ dune exec NAME"
|
||||
; `P
|
||||
"Dune will first try to resolve the executable within the public executables in \
|
||||
the current project, then inside the \"bin\" directory of each package among the \
|
||||
project's dependencies (when using dune package management), and finally within \
|
||||
the directories listed in the $PATH environment variable."
|
||||
]
|
||||
;;
|
||||
|
||||
let info = Cmd.info "location" ~doc ~man
|
||||
|
||||
let term : unit Term.t =
|
||||
let+ builder = Common.Builder.term
|
||||
and+ context = Common.context_arg ~doc:{|Run the command in this build context.|}
|
||||
and+ prog =
|
||||
Arg.(required & pos 0 (some Exec.Cmd_arg.conv) None (Arg.info [] ~docv:"PROG"))
|
||||
in
|
||||
let common, config = Common.init builder in
|
||||
Scheduler.go_with_rpc_server ~common ~config
|
||||
@@ fun () ->
|
||||
let open Fiber.O in
|
||||
let* setup = Import.Main.setup () in
|
||||
build_exn
|
||||
@@ fun () ->
|
||||
let open Memo.O in
|
||||
let* sctx = setup >>| Import.Main.find_scontext_exn ~name:context in
|
||||
let* prog = Exec.Cmd_arg.expand ~root:(Common.root common) ~sctx prog in
|
||||
let+ path = Exec.get_path common sctx ~prog >>| Path.to_string in
|
||||
Dune_console.printf "%s" path
|
||||
;;
|
||||
|
||||
let command = Cmd.v info term
|
||||
Loading…
Add table
Add a link
Reference in a new issue