diff options
author | Griffin Smith <grfn@gws.fyi> | 2020-08-05T03·06-0400 |
---|---|---|
committer | glittershark <grfn@gws.fyi> | 2020-08-05T22·28+0000 |
commit | ea488b570535b1cea5cfec74aa908af92202fcd1 (patch) | |
tree | 26a7efd68a6a485f8cf6dfa9938243154e79914c /third_party/nix/src/libstore/store-api.cc | |
parent | f9df9b47339f3583741ccec9760dd8f3934bdee4 (diff) |
feat(3p/nix): Implement FindRoots, CollectGarbage r/1600
Implement the RPC client and server handlers for the FindRoots and CollectGarbage RPC calls Change-Id: Ifa5d582c6a33bd1e7661ac2fc860505ef404dad0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1656 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
Diffstat (limited to 'third_party/nix/src/libstore/store-api.cc')
-rw-r--r-- | third_party/nix/src/libstore/store-api.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/third_party/nix/src/libstore/store-api.cc b/third_party/nix/src/libstore/store-api.cc index 444ec73cc79f..ab7128227244 100644 --- a/third_party/nix/src/libstore/store-api.cc +++ b/third_party/nix/src/libstore/store-api.cc @@ -77,6 +77,35 @@ nix::proto::BuildStatus BuildResult::status_to_proto() { } } +std::optional<GCOptions::GCAction> GCActionFromProto( + nix::proto::GCAction gc_action) { + switch (gc_action) { + case nix::proto::GCAction::ReturnLive: + return GCOptions::GCAction::gcReturnLive; + case nix::proto::GCAction::ReturnDead: + return GCOptions::GCAction::gcReturnDead; + case nix::proto::GCAction::DeleteDead: + return GCOptions::GCAction::gcDeleteDead; + case nix::proto::GCAction::DeleteSpecific: + return GCOptions::GCAction::gcDeleteSpecific; + default: + return {}; + } +} + +[[nodiscard]] const proto::GCAction GCOptions::ActionToProto() const { + switch (action) { + case GCOptions::GCAction::gcReturnLive: + return nix::proto::GCAction::ReturnLive; + case GCOptions::GCAction::gcReturnDead: + return nix::proto::GCAction::ReturnDead; + case GCOptions::GCAction::gcDeleteDead: + return nix::proto::GCAction::DeleteDead; + case GCOptions::GCAction::gcDeleteSpecific: + return nix::proto::GCAction::DeleteSpecific; + } +} + bool Store::isInStore(const Path& path) const { return isInDir(path, storeDir); } |