. lib/tagdir_parsing.sh
copy_dirtrees_of_tags() {
+ local PATHS_WRITTEN=
+
_copy_dirtree() {
- for _PATH_REL in $(tagdir_parsing__relpaths); do
- _FILENAME="$(basename ${_PATH_REL})"
- _PATH_TARGET_PARENT=/$(dirname "${_PATH_REL}")
+ local PATH_REL
+ for PATH_REL in $(tagdir_parsing__relpaths); do
+ local FILENAME
+ local PATH_TARGET_PARENT
+ local CREATION_SUMMARY
+ local CREATED_PATHS
+
+ FILENAME=$(basename "${PATH_REL}")
+ PATH_TARGET_PARENT=/$(dirname "${PATH_REL}")
# ensure directory by mkdir -p; to avoid later chowning pre-existing directories,
# collect only what's returned by the command as actually newly created
- _CREATION_SUMMARY=$(mkdir -pv "${_PATH_TARGET_PARENT}")
- _CREATED_PATHS=$(echo "${_CREATION_SUMMARY}" | sed -E "s/'\$//g" | sed -E "s/^mkdir: created directory '//g")
- _PATHS_WRITTEN="${_CREATED_PATHS}\n${_PATHS_WRITTEN}"
+ CREATION_SUMMARY=$(mkdir -pv "${PATH_TARGET_PARENT}")
+ CREATED_PATHS=$(echo "${CREATION_SUMMARY}" | sed -E "s/'\$//g" | sed -E "s/^mkdir: created directory '//g")
+ PATHS_WRITTEN="${CREATED_PATHS}\n${PATHS_WRITTEN}"
# handle dirtree creation instruction files
- if tagdir_parsing__is_killme "${_FILENAME}"; then
+ if tagdir_parsing__is_killme "${FILENAME}"; then
continue
fi
- if tagdir_parsing__is_linkme "${_FILENAME}"; then
- _PARSED=$(tagdir_parsing__parse_linkme "${_PATH_REL}")
- _PATH_LINK=$(echo "${_PARSED}" | head -1)
- _LINK_TARGET=$(echo "${_PARSED}" | tail -1)
- ln -sf "${_LINK_TARGET}" "${_PATH_LINK}"
- _PATHS_WRITTEN="${_PATH_LINK}\n${_PATHS_WRITTEN}"
+ if tagdir_parsing__is_linkme "${FILENAME}"; then
+ local PARSED
+ local PATH_LINK
+ local LINK_TARGET
+ PARSED=$(tagdir_parsing__parse_linkme "${PATH_REL}")
+ PATH_LINK=$(echo "${PARSED}" | head -1)
+ LINK_TARGET=$(echo "${PARSED}" | tail -1)
+ ln -sf "${LINK_TARGET}" "${PATH_LINK}"
+ PATHS_WRITTEN="${PATH_LINK}\n${PATHS_WRITTEN}"
continue
fi
# actual file copying
- _CREATION_SUMMARY=$(cp -avL "${_PATH_REL}" "${_PATH_TARGET_PARENT}")
- _CREATED_PATHS=$(echo "${_CREATION_SUMMARY}" | grep -v -E '^removed ' | sed -E "s/'\$//g" | sed "s/.*' -> '//g")
- _PATHS_WRITTEN="${_CREATED_PATHS}\n${_PATHS_WRITTEN}"
+ CREATION_SUMMARY=$(cp -avL "${PATH_REL}" "${PATH_TARGET_PARENT}")
+ _CREATED_PATHS=$(echo "${CREATION_SUMMARY}" | grep -v -E '^removed ' | sed -E "s/'\$//g" | sed "s/.*' -> '//g")
+ PATHS_WRITTEN="${CREATED_PATHS}\n${PATHS_WRITTEN}"
done
}
- _PATHS_WRITTEN=
tagdir_parsing__for_tagdir '_copy_dirtree' $@
- _PATHS_WRITTEN=$(echo "${_PATHS_WRITTEN}" | grep -v -E '^ *$')
+ PATHS_WRITTEN=$(echo "${PATHS_WRITTEN}" | grep -v -E '^ *$')
## for all paths written into user home directories, chown to respective users
- for _PATH in ${_PATHS_WRITTEN}; do
- if [ $(echo "${_PATH}" | grep -E '^/home/' | wc -l) -gt 0 ]; then
- _USERNAME=$(echo "${_PATH}" | sed -E 's/^\/home\///' | sed -E 's/\/.*//')
- chown -R "${_USERNAME}:${_USERNAME}" "${_PATH}"
+ local PATH
+ for PATH in ${PATHS_WRITTEN}; do
+ if [ $(echo "${PATH}" | grep -E '^/home/' | wc -l) -gt 0 ]; then
+ local USERNAME
+ USERNAME=$(echo "${PATH}" | sed -E 's/^\/home\///' | sed -E 's/\/.*//')
+ chown -R "${USERNAME}:${USERNAME}" "${PATH}"
fi
done
}
}
tagdir_parsing__for_tagdir() {
- _COMMAND=$1
+ local COMMAND=$1
shift 1
- _TAGS=$@
- for _TAG in ${_TAGS}; do
- _PATH_TAG="../copy/${_TAG}"
- if [ ! -d "${_PATH_TAG}" ]; then
+ local TAGS=$@
+ local TAG
+ for TAG in ${TAGS}; do
+ local PATH_TAG="../copy/${TAG}"
+ if [ ! -d "${PATH_TAG}" ]; then
continue
fi
- cd "${_PATH_TAG}"
- ${_COMMAND}
+ cd "${PATH_TAG}"
+ ${COMMAND}
cd - > /dev/null
done
}
}
tagdir_parsing__parse_linkme() {
- _PATH_REL_LINKME=$1
- _PATH_REL_LINKME_PARENT=$(dirname "${_PATH_REL_LINKME}")
- _LINK_TARGET=$(cat "${_PATH_REL_LINKME}" | head -1)
- _LINK_NAME=$(cat "${_PATH_REL_LINKME}" | tail -1)
- if [ -z "${_LINK_NAME}" ]; then
- _LINK_NAME=$(basename "${_LINK_TARGET}")
+ local PATH_REL_LINKME=$1
+ local PATH_REL_LINKME_PARENT
+ local LINK_TARGET
+ local LINK_NAME
+ local PATH_ABS
+ PATH_REL_LINKME_PARENT=$(dirname "${PATH_REL_LINKME}")
+ LINK_TARGET=$(cat "${PATH_REL_LINKME}" | head -1)
+ LINK_NAME=$(cat "${PATH_REL_LINKME}" | tail -1)
+ if [ -z "${LINK_NAME}" ]; then
+ _LINK_NAME=$(basename "${LINK_TARGET}")
fi
- _PATH_ABS="/${_PATH_REL_LINKME_PARENT}/${_LINK_NAME}"
- printf '%s\n%s' "${_PATH_ABS}" "${_LINK_TARGET}"
+ PATH_ABS="/${PATH_REL_LINKME_PARENT}/${LINK_NAME}"
+ printf '%s\n%s' "${PATH_ABS}" "${LINK_TARGET}"
}
+++ /dev/null
-../../../bookworm/copy/all/home
\ No newline at end of file
+++ /dev/null
-../../../bookworm/copy/all/root
\ No newline at end of file
#!/bin/sh
set -e
cd $(dirname "$0")
-. lib/abort
-. lib/print_usage
+. lib/abort.sh
+. lib/print_usage.sh
ARG_HELP=--help
USAGE_DESCRIPTION='Set backlight to maximum, or [INTEGER] percentage of it.'
#!/bin/sh
set -e
cd $(dirname "$0")
-. lib/abort
-. lib/constants_borg # PATH_BORG_CONF
-. lib/expect_n_args
-. lib/get_passphrase
-. lib/path_tmp_timestamped
-. lib/print_usage
-. lib/retry_until
+. lib/abort.sh
+. lib/constants_borg.sh # PATH_BORG_CONF
+. lib/expect_n_args.sh
+. lib/get_passphrase.sh
+. lib/path_tmp_timestamped.sh
+. lib/print_usage.sh
+. lib/retry_until.sh
cd - > /dev/null
USAGE_DESCRIPTION='Wrapper around certain borgbackup usages.\n\nAvailable commands:'
set -e
cd $(dirname "$0")
-. lib/abort_if_exists
-. lib/constants_borg # NAME_BORGAPP, PATH_BORG_CONF
-. lib/constants_secrets # PATH_REL_SECRETS, PATH_SECRETS, PATH_SECRETS_BORGKEYS, PATH_SECRETS_KDBX, PATH_USER_KDBX
-. lib/constants_ssh # PATH_USER_SSH
-. lib/constants_user # USERNAME
-. lib/copy_and_unmount_secrets
-. lib/mount_secrets
-. lib/prefixed_msg
+. lib/abort_if_exists.sh
+. lib/constants_borg.sh # NAME_BORGAPP, PATH_BORG_CONF
+. lib/constants_secrets.sh # PATH_REL_SECRETS, PATH_SECRETS, PATH_SECRETS_BORGKEYS, PATH_SECRETS_KDBX, PATH_USER_KDBX
+. lib/constants_ssh.sh # PATH_USER_SSH
+. lib/constants_user.sh # USERNAME
+. lib/copy_and_unmount_secrets.sh
+. lib/mount_secrets.sh
+. lib/prefixed_msg.sh
prefixed_msg_init
#!/bin/sh
set -e
cd $(dirname "$0")
-. lib/abort
-. lib/audio_dev_is_mute
-. lib/print_usage
+. lib/abort.sh
+. lib/audio_dev_is_mute.sh
+. lib/print_usage.sh
MAX_LOUDNESS=150
# see sway-bar(5) and swaybar-protocol(7)
set -e
-. "${HOME}/.plomlib/audio_dev_is_mute"
+. "${HOME}/.plomlib/audio_dev_is_mute.sh"
SYSCLASS_DIR=/sys/class
. lib/prefixed_msg.sh
core_setup() {
-prefixed_msg_init 'core_setup'
-prefixed_msg 'starting (performing standard installation setup steps)'
+ prefixed_msg_init 'core_setup'
+ prefixed_msg 'starting (performing standard installation setup steps)'
-_HOSTNAME="$1"
-_FQDN="$2"
-_EXTERNAL_IP="$3"
-_INSTALL_TAGS="$4"
+ local HOSTNAME="$1"
+ local FQDN="$2"
+ local EXTERNAL_IP="$3"
+ local INSTALL_TAGS="$4"
-./minimize_installation.sh ${_INSTALL_TAGS}
+ ./minimize_installation.sh ${INSTALL_TAGS}
-prefixed_msg 'And now: dist-upgrade …'
-apt_digested -q -q dist-upgrade
+ prefixed_msg 'And now: dist-upgrade …'
+ apt_digested -q -q dist-upgrade
-prefixed_msg "Setting up user: ${USERNAME}"
-adduser --quiet --disabled-password --gecos "" "${USERNAME}"
-usermod -a -G sudo "${USERNAME}"
+ prefixed_msg "Setting up user: ${USERNAME}"
+ adduser --quiet --disabled-password --gecos "" "${USERNAME}"
+ usermod -a -G sudo "${USERNAME}"
-prefixed_msg 'Copying over files, directories …'
-copy_dirtrees_of_tags ${_INSTALL_TAGS}
+ prefixed_msg 'Copying over files, directories …'
+ copy_dirtrees_of_tags ${INSTALL_TAGS}
-prefixed_msg 'Setting hostname …'
-hostnamectl hostname "${_HOSTNAME}"
+ prefixed_msg 'Setting hostname …'
+ hostnamectl hostname "${HOSTNAME}"
-prefixed_msg "Adapting ${_PATH_HOSTS} …"
-_PATH_HOSTS="${PATH_ETC}/hosts"
-if [ -z "${_FQDN}" ]; then
- sed -i 's/REPLACE_WITH_FQDN/REPLACE_WITH_HOSTNAME.local REPLACE_WITH_HOSTNAME.localdomain/g' "${_PATH_HOSTS}"
-else
- sed -i 's/REPLACE_WITH_FQDN/'"${_FQDN}"'/g' "${_PATH_HOSTS}"
- sed -i "s/#REPLACE_WITH_EXTERNAL_IP/${_EXTERNAL_IP}/g" "${_PATH_HOSTS}"
-fi
-sed -i 's/REPLACE_WITH_HOSTNAME/'"${_HOSTNAME}"'/g' "${_PATH_HOSTS}"
+ local PATH_HOSTS="${PATH_ETC}/hosts"
+ prefixed_msg "Adapting ${PATH_HOSTS} …"
+ if [ -z "${FQDN}" ]; then
+ sed -i 's/REPLACE_WITH_FQDN/REPLACE_WITH_HOSTNAME.local REPLACE_WITH_HOSTNAME.localdomain/g' "${PATH_HOSTS}"
+ else
+ sed -i 's/REPLACE_WITH_FQDN/'"${FQDN}"'/g' "${PATH_HOSTS}"
+ sed -i "s/#REPLACE_WITH_EXTERNAL_IP/${EXTERNAL_IP}/g" "${PATH_HOSTS}"
+ fi
+ sed -i 's/REPLACE_WITH_HOSTNAME/'"${HOSTNAME}"'/g' "${PATH_HOSTS}"
-prefixed_msg 'Syncing clock …'
-ntpdate-debian -s
+ prefixed_msg 'Syncing clock …'
+ ntpdate-debian -s
-prefixed_msg 'finished'
-prefixed_msg_exit
+ prefixed_msg 'finished'
+ prefixed_msg_exit
}
#!/bin/sh
set -e
-cd $(dirname "$0")
+ROOT=$(dirname "$0")
+cd "${ROOT}"
. lib/abort_if_command_unknown.sh
. lib/constants_installer.sh # FILENAME_PRESEED_CFG, PATH_PRESEED_CFG
. lib/expect_n_args.sh
abort_if_command_unknown pmount
-expect_n_args 1 4 'DEVICE (e.g. "sdb1") ROOT_PASSWORD WIFI_ESSID WIFI_PASSWORD' $@
+expect_n_args 1 4 'DEVICE (e.g. "sdb1") ROOT_PASSWORD WIFI_ESSID WIFI_PASSWORD' "$@"
DEVICE_NAME="$1"
ROOT_PASSWORD="$2"
WIFI_ESSID="$3"
WIFI_PASSWORD="$4"
-PATH_DEVICE="$(get_mountable_device_path ${DEVICE_NAME})"
+PATH_DEVICE=$(get_mountable_device_path "${DEVICE_NAME}")
UMOUNT_MSG=$(prefixed_msg "Unmounting ${PATH_DEVICE} …")
PATH_MOUNTED_PRESEED_CFG="/media/${DEVICE_NAME}/${FILENAME_PRESEED_CFG}"
cp "${PATH_PRESEED_CFG}" "${PATH_MOUNTED_PRESEED_CFG}"
replace_if_provided() {
- _VAR_NAME="$1"
+ local VAR_NAME="$1"
val_of_var_of_name() { eval printf '"%s"' '"${'"$1"'}"'; }
- if [ ! -z "$(val_of_var_of_name ${_VAR_NAME})" ]; then
- prefixed_msg "Replacing ${_VAR_NAME} …"
- sed -i "s/REPLACE_WITH_${_VAR_NAME}/$(val_of_var_of_name ${_VAR_NAME})/g" "${PATH_MOUNTED_PRESEED_CFG}"
+ local REPLACEMENT
+ REPLACEMENT=$(val_of_var_of_name "${VAR_NAME}")
+ if [ -n "${REPLACEMENT}" ]; then
+ prefixed_msg "Replacing ${VAR_NAME} …"
+ sed -i "s/REPLACE_WITH_${VAR_NAME}/${REPLACEMENT}/g" "${PATH_MOUNTED_PRESEED_CFG}"
fi
}
replace_if_provided ROOT_PASSWORD