screen lock fix
[distro-setup] / switch-mail-host
index 0bce486ecb4a3a50c4a2d8d81dbbdf73b0d6a08a..ffff83e264dbce8b7e1034d85aea10a055711712 100644 (file)
@@ -41,7 +41,7 @@ err-cleanup() {
   fi
 }
 
-pre="$script_name:"
+pre="${SSH_CLIENT:+$HOSTNAME} $script_name:"
 m() { printf "$pre %s\n"  "$*"; "$@"; }
 e() { printf "$pre %s\n"  "$*"; }
 err() { echo "$pre ERROR: $*" >&2; }
@@ -57,7 +57,7 @@ fi
 mail_only=false
 host2_only=false
 force=false
-mp_args="-m /o,/q,/a"
+mp_args="-m /o,/a,/ar,/q,/qr"
 temp=$(getopt -l force,help ioh "$@") || usage 1
 eval set -- "$temp"
 while true; do
@@ -196,8 +196,7 @@ e "On $new_host: umounting /m and /o, checking emacs"
   cat <<'EOF'
 set -eE
 if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
-  export XDG_RUNTIME_DIR=/run/user/1000
-  bufs="$(emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
+  bufs="$(sudo -u iank env XDG_RUNTIME_DIR=/run/user/1000 emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
   if [[ $bufs ]]; then
     echo "error: on $HOSTNAME, unsaved emacs files: $bufs" >&2
     exit 1
@@ -205,11 +204,11 @@ if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
 fi
 EOF
   if ! $host2_only; then
-    cat <<'EOF'
+    cat <<EOF
 for dir in m o; do
-  if mountpoint -q /$dir; then
-    echo On $new_host: umount /$dir
-    umount /$dir
+  if mountpoint -q /\$dir; then
+    echo On $new_host: umount /\$dir
+    umount /\$dir
   fi
 done
 EOF
@@ -218,8 +217,7 @@ EOF
 
 $old_shell bash -s <<'EOF'
 if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
-  export XDG_RUNTIME_DIR=/run/user/1000
-  bufs="$(emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
+  bufs="$(sudo -u iank env XDG_RUNTIME_DIR=/run/user/1000 emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
   if [[ $bufs ]]; then
     echo "error: on $HOSTNAME, unsaved emacs files: $bufs" >&2
     exit 1
@@ -243,8 +241,8 @@ EOF
 
 
 e Running initial btrbk
-if ! m btrbk-run -v $bbk_args $incremental_arg $mp_args; then
-  ret=$?
+m btrbk-run -v $bbk_args $incremental_arg $mp_args || ret=$?
+if (( ret )); then
   err "failed initial btrbk"
   exit $ret
 fi
@@ -255,15 +253,15 @@ if ! $mail_only; then
 fi
 
 if $host2_only; then
-  if [[ $old_hostname != "$MAIL_HOST" ]]; then
+  if [[ $old_hostname != "$MAIL_HOST" && $old_hostname != kd ]]; then
     m $old_shell systemctl --now disable btrbk.timer
   fi
   m $new_shell systemctl --now enable btrbk.timer
   exit 0
 fi
 
-if ! m $old_shell /a/exe/primary-setup $new_hostname; then
-  ret=$?
+m $old_shell /a/exe/primary-setup $new_hostname || ret=$?
+if (( ret )); then
   err "failed \$old_shell primary-setup \$new_hostname. fix and rerun $script_name"
   exit $ret
 fi
@@ -273,7 +271,7 @@ fi
 m $new_shell killall -q emacs ||:
 
 e Running main btrbk
-m btrbk-run -v $bbk_args $incremental_arg -m /o || ret=$?
+m btrbk-run -v --fast $bbk_args $incremental_arg -m /o || ret=$?
 if (( ret )); then
   bang="$(printf "$(tput setaf 5)█$(tput sgr0)%.0s" 1 2 3 4 5 6 7)"
   e $bang failed btrbk of /o. restoring old host as primary
@@ -281,6 +279,10 @@ if (( ret )); then
   exit $ret
 fi
 
+# new system is usable at this point
+printf "$(tput setaf 5 2>/dev/null ||:)█$(tput sgr0 2>/dev/null||:)%.0s" $(eval echo "{1..${COLUMNS:-60}}")
+echo
+
 # once I accidentally accepted incoming mail on old host. I used this script to copy over that mail:
 #
 # die=false; for d in o.leaf.2021-05-29T10:02:08-0400/m/{4e,md,4e2}/{,l/}!(*myarchive)/new; do if $die; then break; fi; find $d -type f -mtime -5 | while read -r f; do dir="${f%new/*}"; dir="btrbk/o.20210530T000011-0400/${dir#*/}"; fname="${f##*/}"; [[ -e $dir/new/$fname || -e $dir/cur/$fname ]] && continue; if ! e cp -a $f /${dir#*/*/}new; then echo failed cp; die=true; break; fi ; done; done
@@ -289,8 +291,8 @@ fi
 #
 # shopt -s nullglob; find . -type f -mtime -2 | while read -r f; do a=( /m/4e/Sent/cur/${f%,*}* ); if (( ${#a[@]} )); then e exists $a; else m cp -a $f /m/4e/Sent/cur; fi; done
 
-if ! m $new_shell /a/exe/primary-setup localhost; then
-  ret=$?
+m $new_shell /a/exe/primary-setup localhost || ret=$?
+if (( ret )); then
   err "failed final primary-setup, just fix and rerun: $new_shell /a/exe/primary-setup localhost"
   exit $ret
 fi