upgrade-nix: add --dry-run

This commit is contained in:
Daiderd Jordan 2018-08-25 20:25:43 +02:00
parent c651b7bdc9
commit 414397759a
No known key found for this signature in database
GPG key ID: D02435D05B810C96

View file

@ -1,4 +1,5 @@
#include "command.hh" #include "command.hh"
#include "common-args.hh"
#include "store-api.hh" #include "store-api.hh"
#include "download.hh" #include "download.hh"
#include "eval.hh" #include "eval.hh"
@ -6,7 +7,7 @@
using namespace nix; using namespace nix;
struct CmdUpgradeNix : StoreCommand struct CmdUpgradeNix : MixDryRun, StoreCommand
{ {
Path profileDir; Path profileDir;
@ -61,19 +62,23 @@ struct CmdUpgradeNix : StoreCommand
{ {
Activity act(*logger, lvlInfo, actUnknown, fmt("downloading '%s'...", storePath)); Activity act(*logger, lvlInfo, actUnknown, fmt("downloading '%s'...", storePath));
if (!dryRun)
store->ensurePath(storePath); store->ensurePath(storePath);
} }
{ {
Activity act(*logger, lvlInfo, actUnknown, fmt("verifying that '%s' works...", storePath)); Activity act(*logger, lvlInfo, actUnknown, fmt("verifying that '%s' works...", storePath));
if (!dryRun) {
auto program = storePath + "/bin/nix-env"; auto program = storePath + "/bin/nix-env";
auto s = runProgram(program, false, {"--version"}); auto s = runProgram(program, false, {"--version"});
if (s.find("Nix") == std::string::npos) if (s.find("Nix") == std::string::npos)
throw Error("could not verify that '%s' works", program); throw Error("could not verify that '%s' works", program);
} }
}
{ {
Activity act(*logger, lvlInfo, actUnknown, fmt("installing '%s' into profile '%s'...", storePath, profileDir)); Activity act(*logger, lvlInfo, actUnknown, fmt("installing '%s' into profile '%s'...", storePath, profileDir));
if (!dryRun)
runProgram(settings.nixBinDir + "/nix-env", false, runProgram(settings.nixBinDir + "/nix-env", false,
{"--profile", profileDir, "-i", storePath, "--no-sandbox"}); {"--profile", profileDir, "-i", storePath, "--no-sandbox"});
} }