Add 'third_party/nix/' from commit 'be66c7a6b24e3c3c6157fd37b86c7203d14acf10'
git-subtree-dir: third_party/nix
git-subtree-mainline: cf8cd640c1
git-subtree-split: be66c7a6b24e3c3c6157fd37b86c7203d14acf10
This commit is contained in:
commit
7994fd1d54
737 changed files with 105390 additions and 0 deletions
68
third_party/nix/src/nix-copy-closure/nix-copy-closure.cc
vendored
Executable file
68
third_party/nix/src/nix-copy-closure/nix-copy-closure.cc
vendored
Executable file
|
|
@ -0,0 +1,68 @@
|
|||
#include "shared.hh"
|
||||
#include "store-api.hh"
|
||||
#include "legacy.hh"
|
||||
|
||||
using namespace nix;
|
||||
|
||||
static int _main(int argc, char ** argv)
|
||||
{
|
||||
{
|
||||
auto gzip = false;
|
||||
auto toMode = true;
|
||||
auto includeOutputs = false;
|
||||
auto dryRun = false;
|
||||
auto useSubstitutes = NoSubstitute;
|
||||
std::string sshHost;
|
||||
PathSet storePaths;
|
||||
|
||||
parseCmdLine(argc, argv, [&](Strings::iterator & arg, const Strings::iterator & end) {
|
||||
if (*arg == "--help")
|
||||
showManPage("nix-copy-closure");
|
||||
else if (*arg == "--version")
|
||||
printVersion("nix-copy-closure");
|
||||
else if (*arg == "--gzip" || *arg == "--bzip2" || *arg == "--xz") {
|
||||
if (*arg != "--gzip")
|
||||
printMsg(lvlError, format("Warning: '%1%' is not implemented, falling back to gzip") % *arg);
|
||||
gzip = true;
|
||||
} else if (*arg == "--from")
|
||||
toMode = false;
|
||||
else if (*arg == "--to")
|
||||
toMode = true;
|
||||
else if (*arg == "--include-outputs")
|
||||
includeOutputs = true;
|
||||
else if (*arg == "--show-progress")
|
||||
printMsg(lvlError, "Warning: '--show-progress' is not implemented");
|
||||
else if (*arg == "--dry-run")
|
||||
dryRun = true;
|
||||
else if (*arg == "--use-substitutes" || *arg == "-s")
|
||||
useSubstitutes = Substitute;
|
||||
else if (sshHost.empty())
|
||||
sshHost = *arg;
|
||||
else
|
||||
storePaths.insert(*arg);
|
||||
return true;
|
||||
});
|
||||
|
||||
initPlugins();
|
||||
|
||||
if (sshHost.empty())
|
||||
throw UsageError("no host name specified");
|
||||
|
||||
auto remoteUri = "ssh://" + sshHost + (gzip ? "?compress=true" : "");
|
||||
auto to = toMode ? openStore(remoteUri) : openStore();
|
||||
auto from = toMode ? openStore() : openStore(remoteUri);
|
||||
|
||||
PathSet storePaths2;
|
||||
for (auto & path : storePaths)
|
||||
storePaths2.insert(from->followLinksToStorePath(path));
|
||||
|
||||
PathSet closure;
|
||||
from->computeFSClosure(storePaths2, closure, false, includeOutputs);
|
||||
|
||||
copyPaths(from, to, closure, NoRepair, NoCheckSigs, useSubstitutes);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static RegisterLegacyCommand s1("nix-copy-closure", _main);
|
||||
Loading…
Add table
Add a link
Reference in a new issue