mirror of https://gitlab.com/dabruh/dotfiles.git
94 lines
2.2 KiB
Bash
Executable File
94 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
SCRIPT_DIR="$(
|
|
cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1
|
|
pwd -P
|
|
)"
|
|
IGNORED_FILES="$(cat "$SCRIPT_DIR/.installer/ignored")"
|
|
EXECUTABLE_FILES="$(cat "$SCRIPT_DIR/.installer/executables")"
|
|
|
|
function is_ignored() {
|
|
while IFS= read -r line; do
|
|
grep -Eq "$line" <<<"${1:?}" && return 0
|
|
done <<<"$IGNORED_FILES"
|
|
return 1
|
|
}
|
|
|
|
function is_executable() {
|
|
while IFS= read -r line; do
|
|
grep -Eq "$line" <<<"${1:?}" && return 0
|
|
done <<<"$EXECUTABLE_FILES"
|
|
return 1
|
|
}
|
|
|
|
function is_identical() {
|
|
local src dst src_sum dst_sum
|
|
src="$SCRIPT_DIR/$1"
|
|
dst="$HOME/$1"
|
|
|
|
! [ -e "$dst" ] && return 1
|
|
|
|
src_sum="$(sha256sum "$src" | cut -d' ' -f1)"
|
|
dst_sum="$(sha256sum "$dst" | cut -d' ' -f1)"
|
|
|
|
[[ "$src_sum" == "$dst_sum" ]] && return 0
|
|
return 1
|
|
}
|
|
|
|
function install() {
|
|
local file dir src dst perform_copy
|
|
|
|
echo "Copying files... 💾"
|
|
|
|
while IFS= read -r file; do
|
|
[[ "$file" == *".git/"* ]] && continue
|
|
|
|
perform_copy=true
|
|
file="${file#"$SCRIPT_DIR/"}"
|
|
dir="$(dirname "$HOME/$file")"
|
|
src="$SCRIPT_DIR/$file"
|
|
dst="$HOME/$file"
|
|
|
|
if is_ignored "$file"; then
|
|
echo "IGNORE: '$file'"
|
|
continue
|
|
elif ! [ -d "$dir" ]; then
|
|
echo "MKDIR : '$dir'"
|
|
mkdir -p "$dir" || exit 10
|
|
elif is_identical "$file"; then
|
|
echo "NODIFF: '$file'"
|
|
perform_copy=false
|
|
fi
|
|
|
|
if $perform_copy; then
|
|
if [ -e "$dst" ]; then
|
|
echo "DIFF : '$file'"
|
|
else
|
|
echo "NEW : '$file'"
|
|
fi
|
|
cp --no-dereference "$src" "$dst" || exit 20
|
|
fi
|
|
|
|
if is_executable "$file" && ! [ -x "$dst" ]; then
|
|
echo "+EXEC : '$file'"
|
|
chmod +x "$dst"
|
|
fi
|
|
done <<<"$(find "$SCRIPT_DIR" -type f && find "$SCRIPT_DIR" -type l)"
|
|
echo
|
|
}
|
|
|
|
function override_bg() {
|
|
local default=~/.local/share/bg override=~/Pictures/bg
|
|
|
|
! [ -e "$override" ] && return
|
|
|
|
echo "Overriding default background with '$override'."
|
|
ln -sfn "$override" "$default"
|
|
echo
|
|
}
|
|
|
|
install
|
|
override_bg
|
|
"$SCRIPT_DIR/.local/bin/i3-config-builder"
|
|
echo "Done! 👌"
|