2022-08-25 12:57:03 +00:00
|
|
|
open Mirage
|
|
|
|
|
|
|
|
type paf = Paf
|
|
|
|
let paf = typ Paf
|
|
|
|
|
|
|
|
let paf_conf () =
|
|
|
|
let packages = [ package "paf" ~sublibs:[ "mirage" ] ] in
|
|
|
|
impl ~packages "Paf_mirage.Make" (time @-> tcpv4v6 @-> paf)
|
|
|
|
|
2022-08-25 20:47:46 +00:00
|
|
|
let remote =
|
|
|
|
let doc = Key.Arg.info
|
|
|
|
~doc:"Remote repository url, use suffix #foo to specify a branch 'foo': \
|
|
|
|
https://github.com/ocaml/opam-repository.git"
|
|
|
|
["remote"]
|
|
|
|
in
|
|
|
|
Key.(create "remote" Arg.(opt string "https://github.com/ocaml/opam-repository.git#master" doc))
|
|
|
|
|
|
|
|
let tls_authenticator =
|
|
|
|
(* this will not look the same in the help printout *)
|
|
|
|
let doc = "TLS host authenticator. See git_http in lib/mirage/mirage.mli for a description of the format."
|
|
|
|
in
|
|
|
|
let doc = Key.Arg.info ~doc ["tls-authenticator"] in
|
|
|
|
Key.(create "tls-authenticator" Arg.(opt (some string) None doc))
|
2022-08-25 12:57:03 +00:00
|
|
|
|
|
|
|
let mirror =
|
|
|
|
foreign "Unikernel.Make"
|
2022-08-25 20:47:46 +00:00
|
|
|
~keys:[ Key.v remote ; Key.v tls_authenticator ]
|
|
|
|
~packages:[
|
|
|
|
package "paf" ~min:"0.0.9" ;
|
|
|
|
package "paf-cohttp" ~min:"0.0.7" ;
|
|
|
|
package ~min:"3.0.0" "irmin-mirage-git" ;
|
|
|
|
package ~min:"3.7.0" "git-paf" ;
|
|
|
|
package "opam-file-format" ;
|
|
|
|
]
|
2022-08-26 13:18:02 +00:00
|
|
|
(kv_rw @-> time @-> pclock @-> stackv4v6 @-> dns_client @-> paf @-> git_client @-> job)
|
2022-08-25 12:57:03 +00:00
|
|
|
|
|
|
|
let paf time stackv4v6 = paf_conf () $ time $ tcpv4v6_of_stackv4v6 stackv4v6
|
|
|
|
|
2022-08-25 20:47:46 +00:00
|
|
|
let stack = generic_stackv4v6 default_network
|
|
|
|
|
|
|
|
let dns = generic_dns_client stack
|
|
|
|
|
|
|
|
let tcp = tcpv4v6_of_stackv4v6 stack
|
|
|
|
|
|
|
|
let git_client =
|
|
|
|
let git = git_happy_eyeballs stack dns (generic_happy_eyeballs stack dns) in
|
|
|
|
merge_git_clients (git_tcp tcp git)
|
|
|
|
(git_http ~authenticator:tls_authenticator tcp git)
|
2022-08-25 12:57:03 +00:00
|
|
|
|
|
|
|
let () = register "mirror"
|
2022-08-26 13:18:02 +00:00
|
|
|
[ mirror $ kv_rw_mem () $ default_time $ default_posix_clock $ stack $ dns $ paf default_time stack $ git_client ]
|