From: Plom Heller Date: Wed, 9 Sep 2026 04:55:57 +0000 (+0200) Subject: Move towards idempotency for start_*.sh scripts. X-Git-Url: https://plomlompom.com/repos/add_task?a=commitdiff_plain;h=838de59698b9fecd260f6b923fea0a8810258f13;p=confplom Move towards idempotency for start_*.sh scripts. --- diff --git a/setup_scripts/_lib.sh b/setup_scripts/_lib.sh index eeeee82..e391142 100644 --- a/setup_scripts/_lib.sh +++ b/setup_scripts/_lib.sh @@ -202,8 +202,11 @@ usage() { || die "${MSG}" } augment_profile() { + local ALIAS_LS='alias ls="ls --color=auto"' msg 'Augmenting user %s …' "${FNAME_PROFILE}" - echo 'alias ls="ls --color=auto"' >> "${PATH_PROFILE}" + # test ensures idempotency + grep -qxF "${ALIAS_LS}" "${PATH_PROFILE}" 2>/dev/null\ + || echo "${ALIAS_LS}" >> "${PATH_PROFILE}" } start_root() { local TARGET=$1 @@ -221,9 +224,13 @@ start_root() { msg 'Ensuring packages: %s' "${TO_INSTALL}" apt-get -y install ${TO_INSTALL} - msg 'Setting up user: %s' "${USERNAME}" - adduser --disabled-password --comment "" "${USERNAME}" - retry_until_success passwd "${USERNAME}" + if try_quiet id -u "${USERNAME}"; then + msg 'User %s already exists, skipping creation …' "${USERNAME}" + else + msg 'Setting up user: %s' "${USERNAME}" + adduser --disabled-password --comment "" "${USERNAME}" + retry_until_success passwd "${USERNAME}" + fi usermod -a -G sudo "${USERNAME}" augment_profile diff --git a/setup_scripts/start_user.sh b/setup_scripts/start_user.sh index ccb3f54..778d1d4 100755 --- a/setup_scripts/start_user.sh +++ b/setup_scripts/start_user.sh @@ -6,5 +6,11 @@ PATH_SKEL_USER="${PATH_REPO}/home_user" augment_profile msg 'Linking %s files into home directory …' "${PATH_SKEL_USER}" -find "${PATH_SKEL_USER}" -mindepth 1 -maxdepth 1\ - -exec ln -v -s {} "${HOME}/" \; +find "${PATH_SKEL_USER}" -mindepth 1 -maxdepth 1 | while IFS= read -r SRC; do + DEST="${HOME}/$(basename "${SRC}")" + if [ -e "${DEST}" ] || [ -L "${DEST}" ]; then + msg 'Skipping already-found %s …' "${DEST}" + else + ln -v -s "${SRC}" "${DEST}" + fi +done