feat(3p/nix): Implement AddToStore proto handler

Implement the proto handler for AddToStore, which adds a nix path to the
store. This is implemented by adding a new (probably
soon-to-be-generalized) Source concretion that wraps a grpc ServerReader
for the stream of data we're receiving from the client - this is less
than ideal, as it's perpetuating the source/sink thing that's going on
and storing entire nars in memory, but is at the very worst an
incremental step towards a functioning nix that we can refactor in the
future.

Paired-With: Perry Lorier <isomer@tvl.fyi>
Paired-With: Vincent Ambo <mail@tazj.in>
Change-Id: I48db734e7460a47aee4a85dd5137b690980859e3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1441
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
Griffin Smith 2020-07-25 18:44:37 -04:00 committed by glittershark
parent 1fe4a47aa2
commit 05e44c121d
7 changed files with 141 additions and 13 deletions

View file

@ -408,9 +408,10 @@ class Store : public std::enable_shared_from_this<Store>, public Config {
std::shared_ptr<FSAccessor> accessor = 0);
/* Copy the contents of a path to the store and register the
validity the resulting path. The resulting path is returned.
validity of the resulting path. The resulting path is returned.
The function object `filter' can be used to exclude files (see
libutil/archive.hh). */
libutil/archive.hh). If recursive is set to true, the path will be treated
as a directory (eg cp -r vs cp) */
virtual Path addToStore(const std::string& name, const Path& srcPath,
bool recursive = true, HashType hashAlgo = htSHA256,
PathFilter& filter = defaultPathFilter,