From 00e1c0fd8bc8e1607572f94aca2e378e875316a8 Mon Sep 17 00:00:00 2001 From: Christian Heller <c.heller@plomlompom.de> Date: Sat, 22 Mar 2025 05:17:41 +0100 Subject: [PATCH] Minor code improvements. --- testing/home/desktop/.local/bin/borgplom | 7 +++--- testing/home/desktop/.local/bin/vol | 2 +- .../desktop/.nonpath_bins/plomlib.sh.desktop | 4 +++- testing/home/t490s/.nonpath_bins/status.sh | 3 ++- testing/scripts/_config_scripts_lib.sh | 14 +++++------ testing/scripts/_setup_secrets_user.sh | 12 ++++++++-- testing/scripts/setup_desktop.sh | 23 +++++++++++++------ testing/scripts/setup_secrets.sh | 20 ++++++++++++---- 8 files changed, 58 insertions(+), 27 deletions(-) diff --git a/testing/home/desktop/.local/bin/borgplom b/testing/home/desktop/.local/bin/borgplom index cd48a0b..53afe44 100755 --- a/testing/home/desktop/.local/bin/borgplom +++ b/testing/home/desktop/.local/bin/borgplom @@ -1,6 +1,8 @@ #!/bin/sh set -e + . "${HOME}/.nonpath_bins/plomlib.sh" +# for: get_passphrase PATH_BORGKEYS="${HOME}/.config/borg/keys" NAME_REPO=borg @@ -22,8 +24,7 @@ if [ "$1" = "orgpull" ]; then REPO="${NAME_SERVER}:${NAME_REPO}" while true; do if [ -z "${BORG_PASSPHRASE}" ]; then - get_passphrase - export BORG_PASSPHRASE="${PASSPHRASE}" + export BORG_PASSPHRASE="$(get_passphrase)" fi set +e ARCHIVES=$(borg list "${REPO}") # separate step so we may fail early on bad passphrase @@ -35,7 +36,7 @@ if [ "$1" = "orgpull" ]; then echo "Aborting due to unexpected ${NAME_BORGAPP} error." exit 1 fi - export BORG_PASSPHRASE="" + export BORG_PASSPHRASE= done ARCHIVE=$(echo "${ARCHIVES}" | grep "${NAME_ARCHIVE}" | tail -1 | cut -f1 -d' ') echo "Pulling archive: ${ARCHIVE}" diff --git a/testing/home/desktop/.local/bin/vol b/testing/home/desktop/.local/bin/vol index 2cb591d..0ae8077 100755 --- a/testing/home/desktop/.local/bin/vol +++ b/testing/home/desktop/.local/bin/vol @@ -1,8 +1,8 @@ #!/bin/sh set -e -# for: audio_dev_is_mute . "${HOME}/.nonpath_bins/plomlib.sh" +# for: audio_dev_is_mute MAX_LOUDNESS=150 diff --git a/testing/home/desktop/.nonpath_bins/plomlib.sh.desktop b/testing/home/desktop/.nonpath_bins/plomlib.sh.desktop index 43acf00..9546de2 100644 --- a/testing/home/desktop/.nonpath_bins/plomlib.sh.desktop +++ b/testing/home/desktop/.nonpath_bins/plomlib.sh.desktop @@ -1,9 +1,11 @@ +set -e + get_passphrase() { stty -echo printf "\nPassphrase: " read PASSPHRASE stty echo - echo "" # newline so user knows their input return was accepted + printf "${PASSPHRASE}" } audio_dev_is_mute() { diff --git a/testing/home/t490s/.nonpath_bins/status.sh b/testing/home/t490s/.nonpath_bins/status.sh index 4aee19e..b997559 100755 --- a/testing/home/t490s/.nonpath_bins/status.sh +++ b/testing/home/t490s/.nonpath_bins/status.sh @@ -1,8 +1,9 @@ #!/bin/sh # see sway-bar(5) and swaybar-protocol(7) +set -e -# for: audio_dev_is_mute . "${HOME}/.nonpath_bins/plomlib.sh" +# for: audio_dev_is_mute SYSCLASS_DIR=/sys/class diff --git a/testing/scripts/_config_scripts_lib.sh b/testing/scripts/_config_scripts_lib.sh index c41cf4a..2594682 100644 --- a/testing/scripts/_config_scripts_lib.sh +++ b/testing/scripts/_config_scripts_lib.sh @@ -1,15 +1,13 @@ -export DEBIAN_FRONTEND=noninteractive +# NB: this all assumes we're run from script's parent directory +PARENT_DIR=$(dirname $(pwd)) +DEBIAN_RELEASE=$(basename ${PARENT_DIR}) +PATH_REPO=$(dirname ${PARENT_DIR}) +PATH_CONF="${PATH_REPO}/${DEBIAN_RELEASE}" +PATH_CONF_HOME="${PATH_CONF}/home" USERNAME=plom PATH_USER_HOME="/home/${USERNAME}" -# NB: this assume we're run from script's parent directory -cd ../.. -PATH_REPO=$(pwd) -cd - -PATH_CONF="${PATH_REPO}/testing" -PATH_CONF_HOME="${PATH_CONF}/home" - expect_min_n_args() { MIN_ARGS="$1" EXPLAINER="$2" diff --git a/testing/scripts/_setup_secrets_user.sh b/testing/scripts/_setup_secrets_user.sh index 44de809..5b2b512 100644 --- a/testing/scripts/_setup_secrets_user.sh +++ b/testing/scripts/_setup_secrets_user.sh @@ -1,7 +1,14 @@ set -e +cd $(dirname "$0") -# NB: this assume we're run from script's parent directory . ./_config_scripts_lib.sh +# for: +# abort_if_exists +# abort_if_not_user +# abort_if_offline +# - PATH_REPO +# - PATH_USER_HOME +# - USERNAME PATH_REPOS="${HOME}/repos" PATH_BORGKEYS="${HOME}/.config/borg/keys" @@ -40,9 +47,10 @@ REPOS_SITE_LOGIN="${USERNAME}@${REPOS_SITE_DOMAIN}" ssh-keyscan "${REPOS_SITE_DOMAIN}" >> "${PATH_KNOWN_HOSTS}" mkdir "${PATH_REPOS}" cd "${PATH_REPOS}" -ssh ${REPOS_SITE_LOGIN} "cd $REMOTE_PATH_REPOS && ls -1" | while read REPO_NAME; do +ssh ${REPOS_SITE_LOGIN} "cd ${REMOTE_PATH_REPOS} && ls -1" | while read REPO_NAME; do git clone --recurse "${REPOS_SITE_LOGIN}:${REMOTE_PATH_REPOS}/${REPO_NAME}" done +cd - echo "\nSetting up borg and pull in ~/org" PATH_TARED_KEYS=borg_keyfiles diff --git a/testing/scripts/setup_desktop.sh b/testing/scripts/setup_desktop.sh index 725ce6a..5405ecd 100755 --- a/testing/scripts/setup_desktop.sh +++ b/testing/scripts/setup_desktop.sh @@ -1,8 +1,16 @@ #!/bin/sh set -e +cd $(dirname "$0") -# NB: this assume we're run from script's parent directory . ./_config_scripts_lib.sh +# for: +# - abort_if_offline +# - expect_min_n_args +# - PATH_CONF +# - PATH_CONF_HOME +# - PATH_REPO +# - PATH_USER_HOME +# - USERNAME PATH_REL_ETC=etc PATH_CONF_ETC="${PATH_CONF}/${PATH_REL_ETC}" @@ -13,13 +21,14 @@ PATH_REL_APT_CONF=${PATH_REL_APT}/apt.conf.d TAG_ALL=all TAGS_USER='user desktop' +export DEBIAN_FRONTEND=noninteractive + copy_dirtree() { expect_min_n_args 3 "(source root, target root, tags)" "$@" SOURCE_ROOT="$1" TARGET_ROOT="$2" shift 2 - modules="$@" - INITIAL_DIRECTORY="$(pwd)" + TAGS="$@" for TAG in ${TAGS}; do TAG_PATH="${SOURCE_ROOT}/${TAG}" if [ ! -d "${TAG_PATH}" ]; then @@ -33,7 +42,7 @@ copy_dirtree() { mkdir -p "${DIRECTORY}" cp "${SOURCE_PATH}" "${TARGET_PATH}" done - cd "${INITIAL_DIRECTORY}" + cd - done } @@ -117,7 +126,7 @@ mark_nonrequireds_auto() { install_aptmarkeds() { # Walk through the package names in ../aptmark/ files to ensure the respective # packages are installed. - for TAG in ${MIN_TAGS} user desktop; do + for TAG in $1; do PATH="${PATH_CONF}/aptmark/${TAG}" if [ ! -f "${PATH}" ]; then continue @@ -155,7 +164,7 @@ abort_if_illegal_system_name "${SYSTEM_NAME}" SYSTEM_CLASS_NAME="$(get_system_class_for ${SYSTEM_NAME})" MIN_TAGS="${TAG_ALL} ${SYSTEM_CLASS_NAME} ${SYSTEM_NAME}" -echo "\nUpgrading to testing." +echo "\nUpgrading to ${DEBIAN_RELEASE}." # For this step only very selectively prepare /etc/ files. cp "${PATH_CONF_ETC}/${TAG_ALL}/${PATH_REL_APT_CONF}/99_minimize_dependencies" "${PATH_ETC}/${PATH_REL_APT_CONF}/" upgrade_from_older_release @@ -168,7 +177,7 @@ if [ "${SYSTEM_NAME}" = "h610m" ]; then # Hold kernel known to work with nvidia-drivers. apt-mark hold linux-image-amd64 linux-headers-amd64 fi -install_aptmarkeds +install_aptmarkeds ${MIN_TAGS} ${TAGS_USER} apt -y --purge autoremove # NB: This needs to come before steps potentially overwriting /etc/network/interfaces. diff --git a/testing/scripts/setup_secrets.sh b/testing/scripts/setup_secrets.sh index a72f4c5..55cb64a 100755 --- a/testing/scripts/setup_secrets.sh +++ b/testing/scripts/setup_secrets.sh @@ -1,9 +1,21 @@ #!/bin/sh set -e +cd $(dirname "$0") -# NB: this assume we're run from script's parent directory . ./_config_scripts_lib.sh -. "${PATH_CONF_HOME}"/desktop/.nonpath_bins/plomlib.sh +# for: +# - abort_if_exists +# - abort_if_not_user +# - abort_if_offline +# - expect_min_n_args +# - DEBIAN_RELEASE +# - PATH_CONF_HOME +# - PATH_REPO +# - PATH_USER_HOME +# - USERNAME + +. "${PATH_USER_HOME}/.nonpath_bins/plomlib.sh" +# for: get_passphrase export PATH_SECRETS=${PATH_USER_HOME}/to_usb @@ -21,7 +33,7 @@ while [ ! -e "${PATH_DEV}" ]; do sleep 0.1 done while true; do - get_passphrase + PASSPHRASE=$(get_passphrase) set +e echo "${PASSPHRASE}" | pmount "${PATH_DEV}" RESULT=$? @@ -43,4 +55,4 @@ if [ "${CONTAINS_TICK}" = "1" ]; then echo "Cannot pass to user script passphrase with illegal character, aborting." exit 1 fi -su -l "${USERNAME}" -c "cd ${PATH_REPO}/testing/scripts && /bin/sh ./_setup_secrets_user.sh '${PASSPHRASE}'" +su -l "${USERNAME}" -c "/bin/sh ./$(basename ${PATH_REPO})/${DEBIAN_RELEASE}/scripts/_setup_secrets_user.sh '${PASSPHRASE}'" -- 2.30.2