fix: guard success messages on command exit status

- Source x-path instead of capturing empty stdout via command substitution
- Validate --dry-run argument in cleanup script, reject unknown flags
- Gate success messages on preceding command's exit status with &&
- Applies to dfm (fmt, reset_nvim, shfmt) and install scripts
  (fonts, gh-extensions, python-packages, shellspec, z)
This commit is contained in:
2026-03-18 12:33:00 +02:00
parent 9df2996a5d
commit e918a41d75
8 changed files with 39 additions and 23 deletions

View File

@@ -22,7 +22,10 @@
PATH="$DOTFILES/local/bin:$PATH"
# Use x-path to deduplicate PATH entries (only if x-path is available)
if command -v x-path &> /dev/null; then
PATH="$(x-path prepend "$XDG_BIN_HOME" "$DOTFILES/local/bin" "/opt/homebrew/bin" "/usr/local/bin")"
# shellcheck source=../local/bin/x-path
source "$(command -v x-path)"
normalize_path_var
do_prepend "$XDG_BIN_HOME" "$DOTFILES/local/bin" "/opt/homebrew/bin" "/usr/local/bin"
fi
export PATH

View File

@@ -531,9 +531,9 @@ section_dotfiles()
case "$1" in
fmt)
msgr run "Running all formatters"
$0 dotfiles yamlfmt
$0 dotfiles shfmt
msgr run_done "...done!"
$0 dotfiles yamlfmt \
&& $0 dotfiles shfmt \
&& msgr run_done "...done!"
;;
reset_all)
@@ -547,12 +547,16 @@ section_dotfiles()
~/.local/share/nvim \
~/.local/state/nvim \
~/.cache/nvim \
~/.config/nvim
msgr ok "Deleted old nvim files (share, state and cache + config)"
ln -s "$DOTFILES/config/nvim" ~/.config/nvim
msgr ok "Linked nvim and astronvim"
$0 install mise
msgr ok "Installed packages"
~/.config/nvim \
&& msgr ok "Deleted old nvim files (share, state and cache + config)"
ln -s "$DOTFILES/config/nvim" ~/.config/nvim \
&& msgr ok "Linked nvim and astronvim"
if $0 install mise; then
msgr ok "Installed packages"
else
msgr err "Failed to install mise tools"
exit 1
fi
msgr run_done "nvim reset!"
;;
@@ -575,8 +579,8 @@ section_dotfiles()
--language-dialect bash \
--func-next-line --list --write \
--indent 2 --case-indent --space-redirects \
--binary-next-line {} \;
msgr yay "dotfiles have been shfmt formatted!"
--binary-next-line {} \; \
&& msgr yay "dotfiles have been shfmt formatted!"
;;
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;

View File

@@ -12,7 +12,15 @@ fi
# shellcheck source=shared.sh
source "$DOTFILES/config/shared.sh"
DRY_RUN="${1:-}"
DRY_RUN=""
if [[ $# -gt 0 ]]; then
if [[ "$1" = "--dry-run" ]]; then
DRY_RUN="--dry-run"
else
echo "Usage: $0 [--dry-run]" >&2
exit 1
fi
fi
remove_dir()
{

View File

@@ -51,8 +51,9 @@ install_fonts()
{
msgr run "Starting to install NerdFonts..."
# shellcheck disable=SC2048,SC2086
./install.sh -q -s ${fonts[*]}
msgr run_done "Done"
# shellcheck disable=SC2086
./install.sh -q -s ${fonts[*]} \
&& msgr run_done "Done"
return 0
}

View File

@@ -51,8 +51,8 @@ install_extensions()
# Install all GitHub CLI extensions
main()
{
install_extensions
msgr run_done "Done"
install_extensions \
&& msgr run_done "Done"
return 0
}

View File

@@ -35,5 +35,5 @@ install_libraries()
return 0
}
install_libraries
msgr yay "Python library installations complete"
install_libraries \
&& msgr yay "Python library installations complete"

View File

@@ -23,8 +23,8 @@ install_shellspec()
fi
msgr run "Running make install..."
make -C "$SHELLSPEC_CACHE" install PREFIX="$HOME/.local"
msgr run_done "shellspec $version installed to $HOME/.local/bin/shellspec"
make -C "$SHELLSPEC_CACHE" install PREFIX="$HOME/.local" \
&& msgr run_done "shellspec $version installed to $HOME/.local/bin/shellspec"
return 0
}

View File

@@ -15,8 +15,8 @@ clone_z_repo()
local bin_path=$2
if [[ ! -d "$bin_path" ]]; then
git clone "$git_path" "$bin_path"
msgr run_done "z installed at $bin_path"
git clone "$git_path" "$bin_path" \
&& msgr run_done "z installed at $bin_path"
else
msgr ok "z ($bin_path/) already installed"
fi