dotfiles/files/setup.sh
2023-11-13 14:11:21 +00:00

46 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
##
## SPDX-License-Identifier: AGPL-3.0-or-later
set -eu
prg="$0"
if ! test -e "$prg"; then
case "$prg" in
(*/*) exit 1;;
(*) prg=$(command -v -- "$prg") || exit;;
esac
fi
dir="$(cd -P -- "$(dirname -- "$prg")" && pwd -P)" || exit 1
prg="$dir/$(basename -- "$prg")" || exit 1
cd -- "$dir" || exit 1
usage(){
printf '%s\n' "Usage: ${0##*/} [-h|--help] DIR [DIR2...]"
printf '%s\n' "Example: ${0##*/} # deploy all"
printf '%s\n' "Example: ${0##*/} sh vim ... # deploy specific dirs"
}
case "${1-}" in
-h|--help) usage; exit 1;;
""|--all) args="$(find . -maxdepth 1 -type d)";;
*) args="${*}";;
esac
for dir in $args; do
case "${dir##*/}" in "."|"..") continue;; esac
dir="${dir%*/}"
test -f "$dir" && continue
if ! test -d "$dir"; then
printf '%s\n' "Directory doesn't exist: '$dir'." >&2
exit 1
fi
for file in "$dir"/.*; do
test -e "$file" || continue
case "${file##*/}" in "."|"..") continue;; esac
cp -rv "$file" "$HOME"
done
done