bootstrap: refactor

This commit is contained in:
Oleksandr Smirnov 2025-09-15 13:28:55 +03:00
parent e1d3d92ec6
commit 696e53344e
No known key found for this signature in database

View file

@ -1,35 +1,33 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
# the path to dir where the script and dotfiles are located : "${DOTFILES_PATH:=$HOME/.dotfiles}"
# set to specific path so this script can be run from anywhere : "${DOTFILES_HOME:=$HOME}"
dotfilesPath="$HOME/.dotfiles"
h() { # ln -sf and logs path lnk() {
ln -sf "$1" "$2" [[ -e "$2" ]] &&
echo "[ln] $2" echo -e "\e[31m[ln] $1 (overwritten)\e[0m" ||
echo -e "\r\e[32m[ln] $2\e[0m"
ln -sf "$1" "$2"
} }
mkd() { # mkdir -p and logs path dr() {
mkdir -p "$1" mkdir -p "$1"
echo "[mkdir] $1" echo -e "\e[34m[mkdir] $1\e[0m"
} }
create_links_in_dir_recursively() { dotify() {
local base_dir="$dotfilesPath/$1" local base_dir="$DOTFILES_PATH/$1"
local target_dir="$2" local target_dir="$2"
find "$base_dir/" -type d | while read -r dir; do find "$base_dir" -type d -print0 | while IFS= read -r -d '' dir; do
mkd "$HOME/$target_dir${dir#"$base_dir"}" dr "$DOTFILES_HOME/$target_dir${dir#"$base_dir"}"
find "$dir" -maxdepth 1 -type f | while read -r file; do find "$dir" -maxdepth 1 -type f -print0 | while IFS= read -r -d '' file; do
h "$file" "$HOME/$target_dir${file#"$base_dir"}" lnk "$file" "$DOTFILES_HOME/$target_dir${file#"$base_dir"}"
done done
done done
} }
h "$dotfilesPath/tmux.conf" "$HOME/.tmux.conf" # let the lord do the linking
dotify "config" ".config"
mkd "$HOME/bin/" dotify "bin" "bin"
find "$dotfilesPath/bin" -type f -exec ln -sf {} "$HOME/bin/" \;
create_links_in_dir_recursively "config" ".config"