about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-09-13T22·05-0400
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-09-13T22·05-0400
commit9fd9dedf12bb64e02b35e9231173f9ebae5e1492 (patch)
tree6dd72e499176960e043ac8db4f9259674f8713bd
parent1bda006b748ffec371096af56a8fbf7125658f71 (diff)
nix-env --delete-generations: Support --dry-run flag
Fixes #43.
-rw-r--r--doc/manual/nix-env.xml3
-rw-r--r--src/nix-env/nix-env.cc15
2 files changed, 12 insertions, 6 deletions
diff --git a/doc/manual/nix-env.xml b/doc/manual/nix-env.xml
index 02a51c6e9006..a5217450b5a3 100644
--- a/doc/manual/nix-env.xml
+++ b/doc/manual/nix-env.xml
@@ -105,7 +105,8 @@ also <xref linkend="sec-common-options" />.</phrase></para>
 
     <listitem><para>For the <option>--install</option>,
     <option>--upgrade</option>, <option>--uninstall</option>,
-    <option>--switch-generation</option> and
+    <option>--switch-generation</option>,
+    <option>--delete-generations</option> and
     <option>--rollback</option> operations, this flag will cause
     <command>nix-env</command> to print what
     <emphasis>would</emphasis> be done if this flag had not been
diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc
index 5174daf90d86..dd2fa30481f7 100644
--- a/src/nix-env/nix-env.cc
+++ b/src/nix-env/nix-env.cc
@@ -1205,10 +1205,15 @@ static void opListGenerations(Globals & globals,
 }
 
 
-static void deleteGeneration2(const Path & profile, unsigned int gen)
+static void deleteGeneration2(Globals & globals, unsigned int gen)
 {
-    printMsg(lvlInfo, format("removing generation %1%") % gen);
-    deleteGeneration(profile, gen);
+    if (globals.dryRun)
+        printMsg(lvlInfo, format("would remove generation %1%") % gen);
+    else {
+        printMsg(lvlInfo, format("removing generation %1%") % gen);
+        deleteGeneration(globals.profile, gen);
+    }
+    
 }
 
 
@@ -1229,7 +1234,7 @@ static void opDeleteGenerations(Globals & globals,
         if (*i == "old") {
             for (Generations::iterator j = gens.begin(); j != gens.end(); ++j)
                 if (j->number != curGen)
-                    deleteGeneration2(globals.profile, j->number);
+                    deleteGeneration2(globals, j->number);
         }
 
         else {
@@ -1239,7 +1244,7 @@ static void opDeleteGenerations(Globals & globals,
             bool found = false;
             for (Generations::iterator j = gens.begin(); j != gens.end(); ++j) {
                 if (j->number == n) {
-                    deleteGeneration2(globals.profile, j->number);
+                    deleteGeneration2(globals, j->number);
                     found = true;
                     break;
                 }