summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Maudoux <layus.on@gmail.com>2015-06-16 23:12:19 +0200
committerGuillaume Maudoux <layus.on@gmail.com>2015-06-16 23:12:19 +0200
commit134dc0965c24713b609d5ab429fa4301ce0fbcaa (patch)
treef49d1ae2eb3d53e3187977a7f90bfde81723b50b
parent6a32cd39f64b96422ac3a69472347de56cc31e16 (diff)
Refactor diff pipeline
* Avoid extended regexes usage in grep and sed; * Minimize the number of calls to grep and sed; * Add comments.
-rwxr-xr-xnix-script-diff-generations.sh12
1 files changed, 9 insertions, 3 deletions
diff --git a/nix-script-diff-generations.sh b/nix-script-diff-generations.sh
index b64b600..3a60f15 100755
--- a/nix-script-diff-generations.sh
+++ b/nix-script-diff-generations.sh
@@ -114,9 +114,15 @@ stdout "Generation packages written for $GEN_B"
stdout "Diffing now..."
-diff -u $versA $versB | grep "nix/store" | sed 's:/nix/store/: :' | \
- grep -E "^(\+|\-).*" | sed -r 's:(.) ([a-z0-9]*)-(.*):\1 \3:' | \
- sort -k 2 -k 1,1r
+diff -u $versA $versB | \
+ # Select only lines that differ.
+ # (no context, no file name, no line number, etc.)
+ grep '^[+-]/nix/store' | \
+ # Remove the "/nix/store/<hash>" garbage.
+ # Add a space instead, to separate the [+-] from the name.
+ sed 's:/nix/store/[^-]*-: :' | \
+ # sort by name, then prefer '+' over '-'.
+ sort -k 2 -k 1,1r
stdout "Removing tmp directories"