My aggregated monorepo of OCaml code, automaintained
at http2 44 lines 1.3 kB view raw
1type t = { 2 name : string; 3 version : string; 4 dev_repo : Uri.t; 5 branch : string option; 6 depends : string list; 7 synopsis : string option; 8} 9 10let create ~name ~version ~dev_repo ?branch ?(depends = []) ?synopsis () = 11 { name; version; dev_repo; branch; depends; synopsis } 12 13let name t = t.name 14let version t = t.version 15let dev_repo t = t.dev_repo 16let branch t = t.branch 17let depends t = t.depends 18let synopsis t = t.synopsis 19 20let repo_name t = 21 (* Extract basename from dev-repo URL, stripping .git suffix *) 22 let path = Uri.path t.dev_repo in 23 let basename = Filename.basename path in 24 if Filename.check_suffix basename ".git" then 25 Filename.chop_suffix basename ".git" 26 else basename 27 28let checkout_dir ~checkouts_root t = Fpath.(checkouts_root / repo_name t) 29let subtree_prefix t = repo_name t 30let compare a b = String.compare a.name b.name 31let equal a b = String.equal a.name b.name 32let same_repo a b = Uri.equal a.dev_repo b.dev_repo 33 34let pp ppf t = 35 Fmt.pf ppf 36 "@[<hov 2>{ name = %S;@ version = %S;@ dev_repo = %a;@ branch = %a;@ \ 37 depends = [%a];@ synopsis = %a }@]" 38 t.name t.version Uri.pp t.dev_repo 39 Fmt.(option ~none:(any "None") string) 40 t.branch 41 Fmt.(list ~sep:(any ", ") string) 42 t.depends 43 Fmt.(option ~none:(any "None") (quote string)) 44 t.synopsis