X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=switch-mail-host;h=df0b83605ee25fc8c7743504d18a5698278a2916;hp=3f299bab601488f44c7d4a7f64ce2601c04ed76c;hb=HEAD;hpb=523b7ff889aaafdcd997d84b2a06744993018e89 diff --git a/switch-mail-host b/switch-mail-host index 3f299ba..053134a 100644 --- a/switch-mail-host +++ b/switch-mail-host @@ -1,6 +1,27 @@ #!/bin/bash +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to switch +# its license to GPL. -source /usr/local/lib/err +# Copyright 2024 Ian Kelling + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +set -e; . /usr/local/lib/bash-bear; set +e usage() { cat </dev/null; then - 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 - fi -fi -EOF - if ! $host2_only; then - cat </dev/null; then - 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 - fi -fi + cat /usr/local/bin/unsaved-buffers - <<'EOF' | $old_shell bash -s # Try to prevent emacs from saving stale data it has in memory to disk. eg: files, recentf list, etc. # But if emacs ignores the signal, let it live. @@ -350,15 +368,18 @@ fi e Running main btrbk m btrbk-run -v --fast $bbk_args $force_arg $incremental_arg -m /o || ret=$? if (( ret )); then - bang="$(printf "$(tput setaf 5)█$(tput sgr0)%.0s" 1 2 3 4 5 6 7)" + bang="███████" e $bang failed btrbk of /o. restoring old host as primary - m $old_shell /a/exe/primary-setup localhost + if ! m $old_shell /a/exe/primary-setup localhost; then + die "due to failed btrbk of /o, we tried to restore old host as primary, but then we failed at that too. To resolve: Fix & rerun switch-mail-host, or fix and rerun primary-setup localhost on old shell so you have a working mail server and then rerun switch-mail-host." + fi + e finished restoring old host as primary, now exiting $ret due to earlier failed btrbk of /o. exit $ret fi # new system is usable at this point blocks=██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ -printf "%s\n" "$(tput setaf 5 2>/dev/null ||:)${blocks:0:${COLUMNS:-180}}$(tput sgr0 2>/dev/null||:)" +printf "%s\n" "${blocks:0:${COLUMNS:-100}}" # once I accidentally accepted incoming mail on old host. I used this script to copy over that mail: # @@ -374,12 +395,4 @@ if (( ret )); then exit $ret fi -if ! $mail_only && [[ -e /p/profanity-here ]]; then - m $new_shell systemctl --now enable profanity || ret=$? - if (( ret )); then - err "failed final systemctl --now enable profanity, just fix and rerun" - exit $ret - fi -fi - m exit 0