From: Christian Heller Date: Sat, 17 May 2025 13:07:35 +0000 (+0200) Subject: Fix. X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/%7B%7Bdb.prefix%7D%7D/ledger?a=commitdiff_plain;h=bf07fb71fa62cc6e72693ba142eb5d734cd00437;p=config Fix. --- diff --git a/bookworm/copy/seedbox/home/plom/tmp/KILL_ME b/bookworm/copy/seedbox/home/plom/tmp/KILL_ME new file mode 100644 index 0000000..e69de29 diff --git a/bookworm/scripts/lib/apt_get_digested b/bookworm/scripts/lib/apt_get_digested index 6f707a7..eaabbb7 100644 --- a/bookworm/scripts/lib/apt_get_digested +++ b/bookworm/scripts/lib/apt_get_digested @@ -1,10 +1,11 @@ +. lib/for_line_in . lib/prefixed_msg apt_get_digested() { prefixed_msg_init 'apt_get_digested' -_FINISH_LINE='apt_get_digested_FINISH_LINE' -_SEDS=\ +local FINISH_LINE='apt_get_digested_FINISH_LINE' +local SEDS=\ '|\(Reading database \.\.\. .*|IGNORE |Generation complete.|IGNORE |Preconfiguring packages \.\.\.|IGNORE @@ -29,57 +30,62 @@ dpkg warns: unable to delete old directories (not empty):|dpkg: warning: unable update-alternatives: providing in auto mode:|update-alternatives: using ([[:print:]]+) to provide ([[:print:]]+) \(([[:print:]]+)\) in auto mode| [\1 → \2 (\3)]' print_nl_if_started_printing() { - if [ ! -z "${_STARTED_PRINTING}" ]; then + if [ ! -z "${STARTED_PRINTING}" ]; then printf '\n' fi printf '\r' } -_LAST_PREFIX='' -_STARTED_PRINTING= -eval "set +e; DEBIAN_FRONTEND=noninteractive apt-get -y $1; _RESULT=\$?; set -e; echo ${_FINISH_LINE} \${_RESULT}" 2>&1 | while read _LINE; do - _LINE=$(printf '%s' "${_LINE}" | tr -d '\r') - if [ -z "${_LINE}" ]; then +local LAST_PREFIX='' +local STARTED_PRINTING= +local LEADER_PREFIX= +local APT_GET_EXIT_CODE +local APT_LINE +eval "set +e; DEBIAN_FRONTEND=noninteractive apt-get -y $1; APT_GET_EXIT_CODE=\$?; set -e; echo ${FINISH_LINE} \${APT_GET_EXIT_CODE}" 2>&1 | while read APT_LINE; do + APT_LINE=$(printf '%s' "${APT_LINE}" | tr -d '\r') + if [ -z "${APT_LINE}" ]; then continue - elif [ "$(echo ${_LINE} | cut -d' ' -f1)" = "${_FINISH_LINE}" ]; then + elif [ "$(echo ${APT_LINE} | cut -d' ' -f1)" = "${FINISH_LINE}" ]; then print_nl_if_started_printing - _STATUS=$(echo ${_LINE} | cut -d' ' -f2) - if [ "${_STATUS}" != "0" ]; then + local EXIT_CODE=$(echo ${APT_LINE} | cut -d' ' -f2) + if [ "${EXIT_CODE}" != "0" ]; then false fi break fi - _COMPRESSED_ITEM='' - for _SED in $(printf '%s' "${_SEDS}" | sed 's/ /#WHITESPACE#/g'); do - _WHITESPACED=$(printf '%s' "${_SED}" | sed 's/#WHITESPACE#/ /g') - _PREFIX=$(printf '%s' "${_WHITESPACED}" | cut -d'|' -f1) - _PATTERN=$(printf '^%s$' "${_WHITESPACED}" | cut -d'|' -f2) - _REPLACEMENT=$(printf '%s' "${_WHITESPACED}" | cut -d'|' -f3) - if printf '%s' "${_LINE}" | grep -E "${_PATTERN}" > /dev/null; then - _COMPRESSED_ITEM=$(printf '%s' "${_LINE}" | sed -E "s|${_PATTERN}|${_REPLACEMENT}|") - if [ "${_PREFIX}" = "BECOME_NEXT_PREFIX" ]; then - _LEADER_PREFIX="${_COMPRESSED_ITEM}" - _COMPRESSED_ITEM=IGNORE - elif [ "${_PREFIX}" = "FOLLOW_PREFIX" ]; then - _PREFIX="${_LEADER_PREFIX}" + local COMPRESSED_ITEM='' + local PREFIX= + try_seds() { + local SED=$1 + PREFIX=$(printf '%s' "${SED}" | cut -d'|' -f1) + local PATTERN=$(printf '^%s$' "${SED}" | cut -d'|' -f2) + local REPLACEMENT=$(printf '%s' "${SED}" | cut -d'|' -f3) + if printf '%s' "${APT_LINE}" | grep -E "${PATTERN}" > /dev/null; then + COMPRESSED_ITEM=$(printf '%s' "${APT_LINE}" | sed -E "s|${PATTERN}|${REPLACEMENT}|") + if [ "${PREFIX}" = "BECOME_NEXT_PREFIX" ]; then + LEADER_PREFIX="${COMPRESSED_ITEM}" + COMPRESSED_ITEM=IGNORE + elif [ "${PREFIX}" = "FOLLOW_PREFIX" ]; then + PREFIX="${LEADER_PREFIX}" fi break fi - done - if [ "${_COMPRESSED_ITEM}" = "IGNORE" ]; then + } + for_line_in "${SEDS}" try_seds + if [ "${COMPRESSED_ITEM}" = "IGNORE" ]; then continue - elif [ -z "${_COMPRESSED_ITEM}" ]; then + elif [ -z "${COMPRESSED_ITEM}" ]; then print_nl_if_started_printing - prefixed_msg_no_nl "${_LINE}" - _LAST_PREFIX='' + prefixed_msg_no_nl "${APT_LINE}" + LAST_PREFIX='' else - if [ "${_PREFIX}" != "${_LAST_PREFIX}" ]; then + if [ "${PREFIX}" != "${LAST_PREFIX}" ]; then print_nl_if_started_printing - prefixed_msg_no_nl "# ${_PREFIX}" - _LAST_PREFIX="${_PREFIX}" + prefixed_msg_no_nl "# ${PREFIX}" + LAST_PREFIX="${PREFIX}" fi - printf ' %s' "${_COMPRESSED_ITEM}" + printf ' %s' "${COMPRESSED_ITEM}" fi - _STARTED_PRINTING=1 + STARTED_PRINTING=1 done prefixed_msg_exit diff --git a/testing/scripts/sync_rtorrent_download.sh b/testing/scripts/sync_rtorrent_download.sh index e99aac6..66c1f2c 100755 --- a/testing/scripts/sync_rtorrent_download.sh +++ b/testing/scripts/sync_rtorrent_download.sh @@ -8,7 +8,7 @@ cd $(dirname "$0") . lib/expect_n_args . lib/expected_rtorrent_files . lib/for_line_in -. lib/path_tmp_timestamped +. lib/trapp cd - > /dev/null DIRNAME_DOWNLOAD='download' @@ -134,25 +134,30 @@ if [ -z "${SYNC_DOWN}" ]; then printf 'LOCAL'; else printf 'REMOTE'; fi printf ' media: %s\n' "${TITLE}" TARGET_DIR="${LOCAL_STORE}/${TITLE}" -TMP_DIR=/$(path_tmp_timestamped "${TITLE}") +if [ -z "${SYNC_DOWN}" ]; then + prefixed_msg 'Uploading …' + TMP_DIR=$(ssh -t -q "${SERVER}" "TMPDIR=~/tmp mktemp -d") +else + prefixed_msg 'Downloading …' + abort_if_exists "${TARGET_DIR}" + TMP_DIR=$(mktemp -d) + trapp "prefixed_msg 'With abortion, removing'${TMP_DIR}; rm -rf ${TMP_DIR}" +fi TMP_DIR_DOWNLOAD="${TMP_DIR}/${DIRNAME_DOWNLOAD}" TMP_DIR_SESSION="${TMP_DIR}/${DIRNAME_SESSION}" if [ -z "${SYNC_DOWN}" ]; then - prefixed_msg 'Uploading …' - ssh -t -q "${SERVER}" "mkdir ${TMP_DIR}" scp -r "${TARGET_DIR}/"* "${SERVER}:${TMP_DIR}/" - ssh -t -q "${SERVER}" "mv ${TMP_DIR_DOWNLOAD} ~/${DIRNAME_DOWNLOADS}/${TITLE}" + ssh -t -q "${SERVER}" "mv ${TMP_DIR_DOWNLOAD}/${TITLE} ~/${DIRNAME_DOWNLOADS}/${TITLE}" ssh -t -q "${SERVER}" "mv ${TMP_DIR_SESSION}/* ~/${DIRNAME_SESSION}/" - ssh -t -q "${SERVER}" "rmdir ${TMP_DIR_SESSION} && rmdir ${TMP_DIR}" + ssh -t -q "${SERVER}" "rmdir ${TMP_DIR_SESSION} && rmdir ${TMP_DIR_DOWNLOAD} && rmdir ${TMP_DIR}" else - prefixed_msg 'Downloading …' - abort_if_exists "${TARGET_DIR}" - mkdir -p "${TMP_DIR_SESSION}" - mkdir -p "${TMP_DIR_DOWNLOAD}" + mkdir "${TMP_DIR_SESSION}" + mkdir "${TMP_DIR_DOWNLOAD}" scp "${SERVER}:~/${DIRNAME_SESSION}/${HASH}"* "${TMP_DIR_SESSION}/" scp -r "${SERVER}:~/${DIRNAME_DOWNLOADS}/${TITLE}" "${TMP_DIR_DOWNLOAD}/" prefixed_msg "Storing in: ${TARGET_DIR}" mv "${TMP_DIR}" "${TARGET_DIR}" + trapp fi prefixed_msg_exit