summaryrefslogtreecommitdiff
path: root/lib/prefetch.ml
diff options
context:
space:
mode:
authorยท๐‘‘๐‘ด๐‘•๐‘‘๐‘ฉ๐‘ค2025-12-31 14:21:34 +0000
committerยท๐‘‘๐‘ด๐‘•๐‘‘๐‘ฉ๐‘ค2025-12-31 14:21:34 +0000
commitf0fc310fe424d5657f416a7fd1c908cb4590e8e9 (patch)
treeb59c3e9122fc4bd32efe5520933a86e8a0742ede /lib/prefetch.ml
parente8504548c82c5b9bb4ee5a797c6e73db5db41357 (diff)
downloadnixtaml-f0fc310fe424d5657f416a7fd1c908cb4590e8e9.tar
nixtaml-f0fc310fe424d5657f416a7fd1c908cb4590e8e9.tar.gz
nixtaml-f0fc310fe424d5657f416a7fd1c908cb4590e8e9.tar.bz2
nixtaml-f0fc310fe424d5657f416a7fd1c908cb4590e8e9.tar.lz
nixtaml-f0fc310fe424d5657f416a7fd1c908cb4590e8e9.tar.xz
nixtaml-f0fc310fe424d5657f416a7fd1c908cb4590e8e9.tar.zst
nixtaml-f0fc310fe424d5657f416a7fd1c908cb4590e8e9.zip
Prefetch: File+Archive stdout result into module
Diffstat (limited to 'lib/prefetch.ml')
-rw-r--r--lib/prefetch.ml34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/prefetch.ml b/lib/prefetch.ml
index 3cc4c2f..c4685b8 100644
--- a/lib/prefetch.ml
+++ b/lib/prefetch.ml
@@ -27,6 +27,40 @@ module Hash = struct
|> Object.opt_mem "sha512" string
end
+module File = struct
+ type t = {
+ path: string;
+ hash_value: string;
+ }
+
+ (* env can assert it is a path *)
+ let of_stdout ?env (stdout : string) : t option =
+ match String.split_on_char '\n' (String.trim stdout), env with
+ | hash_value :: path :: _, None ->
+ Some {path; hash_value}
+ | hash_value :: path :: _, Some env' when Option.is_some (Eio.Path.native (Eio.Path.(Eio.Stdenv.fs env' / path))) ->
+ Some {path; hash_value}
+ | _ ->
+ None
+end
+
+module Archive = struct
+ type t = {
+ path: string;
+ hash_value: string;
+ }
+
+ (* env can assert it is a path *)
+ let of_stdout ?env (stdout : string) : t option =
+ match String.split_on_char '\n' (String.trim stdout), env with
+ | hash_value :: path :: _, None ->
+ Some {path; hash_value}
+ | hash_value :: path :: _, Some env' when Option.is_some (Eio.Path.native (Eio.Path.(Eio.Stdenv.fs env' / path))) ->
+ Some {path; hash_value}
+ | _ ->
+ None
+end
+
module Git = struct
type t = {
datetime: string option;