about summary refs log tree commit diff
path: root/third_party/nix/src/nix/dump-path.cc
blob: 1d0a996e561c8dff447399e10cfafc6b108d056f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "libstore/store-api.hh"
#include "nix/command.hh"

namespace nix {
struct CmdDumpPath final : StorePathCommand {
  std::string name() override { return "dump-path"; }

  std::string description() override {
    return "dump a store path to stdout (in NAR format)";
  }

  Examples examples() override {
    return {
        Example{"To get a NAR from the binary cache https://cache.nixos.org/:",
                "nix dump-path --store https://cache.nixos.org/ "
                "/nix/store/7crrmih8c52r8fbnqb933dxrsp44md93-glibc-2.25"},
    };
  }

  void run(ref<Store> store, const Path& storePath) override {
    FdSink sink(STDOUT_FILENO);
    store->narFromPath(storePath, sink);
    sink.flush();
  }
};
}  // namespace nix

static nix::RegisterCommand r1(nix::make_ref<nix::CmdDumpPath>());