about summary refs log tree commit diff stats
path: root/archive/2.vm/relayout
diff options
context:
space:
mode:
Diffstat (limited to 'archive/2.vm/relayout')
-rwxr-xr-xarchive/2.vm/relayout65
1 files changed, 65 insertions, 0 deletions
diff --git a/archive/2.vm/relayout b/archive/2.vm/relayout
new file mode 100755
index 00000000..8ea48920
--- /dev/null
+++ b/archive/2.vm/relayout
@@ -0,0 +1,65 @@
+#!/bin/bash
+# Helper to change the numerical prefixes across the repo, say if you want to
+# create room between 023 and 024, and so on.
+#
+# Assumes there's only ever one file with any numeric prefix. If you move
+# 003trace.test.cc you might need to do some manual patch-up.
+
+set -e
+
+if [[ $# -eq 0 && `git diff HEAD |wc -l` -gt 0 ]]
+then
+  echo "Uncommitted changes"
+  exit
+fi
+
+if [[ $# -gt 0 ]] # dry run
+then
+  git() {
+    echo $*
+  }
+fi
+
+#
+
+index=0
+ls [0-9]* |grep -v "trace.test" |sort -n |
+  while read file
+  do
+    while [[ $file != `printf "%03d" $index`* ]]
+    do
+      echo
+      index=$(($index+1))
+    done
+    echo $file
+    index=$(($index+1))
+  done > .layout
+
+vim -c "set nu" .layout
+
+#
+
+root() {
+  echo $1 |sed 's/^[0-9]*//'
+}
+
+index=0
+cat .layout |
+  while read file
+  do
+    if [ ! -z $file ]
+    then
+      newfile=`printf "%03d" $index``root $file`
+      if [[ $newfile != $file ]]
+      then
+        echo git mv $file $newfile
+        git mv $file $newfile
+      fi
+    fi
+    index=$(($index+1))
+  done
+
+rm .layout
+
+# Scenarios considered:
+#   Don't redo the layout if Vim exits with error.