aboutsummaryrefslogtreecommitdiff
path: root/src/libmain/shared.cc
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2008-08-04 13:44:46 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2008-08-04 13:44:46 +0000
commita1d310b6b5c710215265c1cd0d5893248ed50f92 (patch)
treebf35d52f339ee027fc749bb63cc3d2bbe5a23f49 /src/libmain/shared.cc
parent42043953c3558f054dc5b9bb3da605a4a3ed6314 (diff)
* `nix-store --realise': print what paths will be built/downloaded,
just like nix-env. * `nix-store --realise': --dry-run option.
Diffstat (limited to 'src/libmain/shared.cc')
-rw-r--r--src/libmain/shared.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 5a8f600e8..fd16dece7 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -4,6 +4,7 @@
#include "globals.hh"
#include "store-api.hh"
#include "util.hh"
+#include "misc.hh"
#include <iostream>
#include <cctype>
@@ -49,6 +50,34 @@ void printGCWarning()
}
+void printMissing(const PathSet & paths)
+{
+ unsigned long long downloadSize;
+ PathSet willBuild, willSubstitute, unknown;
+ queryMissing(paths, willBuild, willSubstitute, unknown, downloadSize);
+
+ if (!willBuild.empty()) {
+ printMsg(lvlInfo, format("the following derivations will be built:"));
+ foreach (PathSet::iterator, i, willBuild)
+ printMsg(lvlInfo, format(" %1%") % *i);
+ }
+
+ if (!willSubstitute.empty()) {
+ printMsg(lvlInfo, format("the following paths will be downloaded/copied (%.2f MiB):") %
+ (downloadSize / (1024.0 * 1024.0)));
+ foreach (PathSet::iterator, i, willSubstitute)
+ printMsg(lvlInfo, format(" %1%") % *i);
+ }
+
+ if (!unknown.empty()) {
+ printMsg(lvlInfo, format("don't know how to build the following paths%1%:")
+ % (readOnlyMode ? " (may be caused by read-only store access)" : ""));
+ foreach (PathSet::iterator, i, unknown)
+ printMsg(lvlInfo, format(" %1%") % *i);
+ }
+}
+
+
static void setLogType(string lt)
{
if (lt == "pretty") logType = ltPretty;