mirror of
https://github.com/gaschz/dotfiles.git
synced 2025-03-01 14:22:33 +01:00
52 lines
1.1 KiB
Bash
Executable File
52 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
|