diff options
author | Florian Klink <flokli@flokli.de> | 2023-01-29T19·48+0100 |
---|---|---|
committer | flokli <flokli@flokli.de> | 2023-01-31T15·28+0000 |
commit | 0db73cb2bd94ce2449571b5707de35b283da0091 (patch) | |
tree | 01403c551647dc6567edf0085fa3128092a9e075 /tvix/store/src/client.rs | |
parent | a23b7e17c04453a4d5ea2d47a88c6c6874471c08 (diff) |
feat(tvix/store): add write_nar function r/5794
This adds a function that consumes a [proto::node::Node] pointing to the root of a (store) path, and writes the contents in NAR serialization to the passed [std::io::Write]. We need this in various places: - tvix-store's calculate_nar() RPC method needs to render a NAR stream to get the nar hash, which is necessary to give things imported in the store a "NAR-based" store path. - communication with (remote) Nix (via daemon protocol) needs a NAR representation. - Things like nar-bridge, exposing a NAR/NARInfo HTTP interface need a NAR representation. Change-Id: I7fb2e0bf01814a1c09094c0e35394d9d6b3e43b6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7956 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/store/src/client.rs')
-rw-r--r-- | tvix/store/src/client.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/tvix/store/src/client.rs b/tvix/store/src/client.rs new file mode 100644 index 000000000000..3b282eacdd70 --- /dev/null +++ b/tvix/store/src/client.rs @@ -0,0 +1,10 @@ +use crate::proto::Directory; + +pub trait StoreClient { + fn open_blob(&self, digest: Vec<u8>) -> std::io::Result<Box<dyn std::io::BufRead>>; + + // TODO: stat_blob, put_blob? + fn get_directory(&self, digest: Vec<u8>) -> std::io::Result<Option<Directory>>; + + // TODO: put_directory +} |