fix: improve install script PATH handling for more shells
- Add ZDOTDIR support for zsh users who relocate their config - Add XDG_CONFIG_HOME paths for zsh and bash - Add ash and sh shell support (Alpine/BusyBox) - Warn user instead of silently creating .bashrc when no config found - Add user feedback on what file was modified - Handle non-writable config files gracefully
This commit is contained in:
@@ -209,11 +209,16 @@ check_docker() {
|
|||||||
add_to_path() {
|
add_to_path() {
|
||||||
local config_file=$1
|
local config_file=$1
|
||||||
local command=$2
|
local command=$2
|
||||||
|
|
||||||
if grep -Fxq "$command" "$config_file" 2>/dev/null; then
|
if grep -Fxq "$command" "$config_file" 2>/dev/null; then
|
||||||
return 0
|
print_message info "${MUTED}PATH already configured in ${NC}$config_file"
|
||||||
elif [[ -w $config_file ]]; then
|
elif [[ -w $config_file ]]; then
|
||||||
echo -e "\n# strix" >> "$config_file"
|
echo -e "\n# strix" >> "$config_file"
|
||||||
echo "$command" >> "$config_file"
|
echo "$command" >> "$config_file"
|
||||||
|
print_message info "${MUTED}Successfully added ${NC}strix ${MUTED}to \$PATH in ${NC}$config_file"
|
||||||
|
else
|
||||||
|
print_message warning "Manually add the directory to $config_file (or similar):"
|
||||||
|
print_message info " $command"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,13 +231,19 @@ setup_path() {
|
|||||||
config_files="$HOME/.config/fish/config.fish"
|
config_files="$HOME/.config/fish/config.fish"
|
||||||
;;
|
;;
|
||||||
zsh)
|
zsh)
|
||||||
config_files="$HOME/.zshrc $HOME/.zshenv"
|
config_files="${ZDOTDIR:-$HOME}/.zshrc ${ZDOTDIR:-$HOME}/.zshenv $XDG_CONFIG_HOME/zsh/.zshrc $XDG_CONFIG_HOME/zsh/.zshenv"
|
||||||
;;
|
;;
|
||||||
bash)
|
bash)
|
||||||
config_files="$HOME/.bashrc $HOME/.bash_profile $HOME/.profile"
|
config_files="$HOME/.bashrc $HOME/.bash_profile $HOME/.profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile"
|
||||||
|
;;
|
||||||
|
ash)
|
||||||
|
config_files="$HOME/.ashrc $HOME/.profile /etc/profile"
|
||||||
|
;;
|
||||||
|
sh)
|
||||||
|
config_files="$HOME/.ashrc $HOME/.profile /etc/profile"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
config_files="$HOME/.bashrc $HOME/.profile"
|
config_files="$HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -245,23 +256,36 @@ setup_path() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [[ -z $config_file ]]; then
|
if [[ -z $config_file ]]; then
|
||||||
config_file="$HOME/.bashrc"
|
print_message warning "No config file found for $current_shell. You may need to manually add to PATH:"
|
||||||
touch "$config_file"
|
print_message info " export PATH=$INSTALL_DIR:\$PATH"
|
||||||
fi
|
elif [[ ":$PATH:" != *":$INSTALL_DIR:"* ]]; then
|
||||||
|
|
||||||
if [[ ":$PATH:" != *":$INSTALL_DIR:"* ]]; then
|
|
||||||
case $current_shell in
|
case $current_shell in
|
||||||
fish)
|
fish)
|
||||||
add_to_path "$config_file" "fish_add_path $INSTALL_DIR"
|
add_to_path "$config_file" "fish_add_path $INSTALL_DIR"
|
||||||
;;
|
;;
|
||||||
|
zsh)
|
||||||
|
add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH"
|
||||||
|
;;
|
||||||
|
bash)
|
||||||
|
add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH"
|
||||||
|
;;
|
||||||
|
ash)
|
||||||
|
add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH"
|
||||||
|
;;
|
||||||
|
sh)
|
||||||
|
add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
add_to_path "$config_file" "export PATH=\"$INSTALL_DIR:\$PATH\""
|
export PATH=$INSTALL_DIR:$PATH
|
||||||
|
print_message warning "Manually add the directory to $config_file (or similar):"
|
||||||
|
print_message info " export PATH=$INSTALL_DIR:\$PATH"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${GITHUB_ACTIONS-}" ] && [ "${GITHUB_ACTIONS}" == "true" ]; then
|
if [ -n "${GITHUB_ACTIONS-}" ] && [ "${GITHUB_ACTIONS}" == "true" ]; then
|
||||||
echo "$INSTALL_DIR" >> "$GITHUB_PATH"
|
echo "$INSTALL_DIR" >> "$GITHUB_PATH"
|
||||||
|
print_message info "Added $INSTALL_DIR to \$GITHUB_PATH"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user