X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;ds=sidebyside;f=switch-mail-host;h=df0b83605ee25fc8c7743504d18a5698278a2916;hb=HEAD;hp=f1cb21272e6a057b41d5e49554b765fc1e98af90;hpb=0f9a999aa601cd77343a3e08cf0c6c4f9f943813;p=distro-setup diff --git a/switch-mail-host b/switch-mail-host index f1cb212..053134a 100644 --- a/switch-mail-host +++ b/switch-mail-host @@ -1,4 +1,25 @@ #!/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. + +# 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 @@ -64,7 +85,7 @@ host2_only=false force=false force_arg= pull_reexec=false -mp_args="-m /o,/a,/ar,/q,/qd,/qr" +mp_args="-m /o,/a,/q,/qd,/qr" check_installed=false orig_args=("$@") if ! temp=$(getopt -l check-installed,force,pull-reexec,help afioh "$@"); then @@ -113,6 +134,26 @@ source /a/bin/bash_unpublished/source-state direction=$1 host=$2 +case $script_name in + switch-mail-host) + if [[ $MAIL_HOST != "$HOST2" ]]; then + mail_only=true + fi + ;; + switch-host2) + host2_only=true + ;; + *) + err unexpected script name + ;; +esac + +if $mail_only; then + mp_args="-m /o" +elif $host2_only; then + mp_args="-m /a,/q,/qd,/qr" +fi + if ! $force && { $check_installed || [[ $direction == push ]]; } ; then install_bin_files=( @@ -166,7 +207,7 @@ case $direction in /usr/local/{bin/{unsaved-buffers{,.el},switch-mail-host},lib/bash-bear} ) m scp -F $HOME/.ssh/confighome \ - ${files@/#/root@$old_host:} $tmpd + ${files[@]/#/root@$old_host:} $tmpd diff=false for f in ${files[@]}; do if ! diff -q $tmpd/${f##*/} $f; then @@ -175,7 +216,7 @@ case $direction in fi done if $diff; then - e "found different version on old_host=$old_hostname, reexecing" + e "found different version on old_host=$old_host, reexecing" m /usr/local/bin/switch-mail-host --pull-reexec "${orig_args[@]}" exit 0 fi @@ -197,25 +238,6 @@ case $direction in ;; esac -case $script_name in - switch-mail-host) - if [[ $MAIL_HOST != "$HOST2" ]]; then - mail_only=true - fi - ;; - switch-host2) - host2_only=true - ;; - *) - err unexpected script name - ;; -esac - -if $mail_only; then - mp_args="-m /o" -elif $host2_only; then - mp_args="-m /a,/ar,/q,/qd,/qr" -fi if ! $force; then if $host2_only; then @@ -267,12 +289,13 @@ while $active; do done done -# ensure these are unused before doing anything -e "On $new_host: umounting /m and /o, checking emacs" -{ - cat /usr/local/bin/unsaved-buffers - if ! $host2_only; then - cat </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: # @@ -368,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