36 lines
784 B
Bash
Executable File
36 lines
784 B
Bash
Executable File
#!/bin/bash
|
|
|
|
declare -A to_copy to_rsync
|
|
repo="$(pwd)"
|
|
|
|
# files to copy
|
|
to_copy["${HOME}/.bashrc"]='shell/bashrc'
|
|
|
|
# directories to copy
|
|
to_rsync["${HOME}/.config/aliases"]='aliases'
|
|
|
|
# directories to copy
|
|
to_rsync["${HOME}/bin"]='bin'
|
|
|
|
for src in "${!to_copy[@]}"; do
|
|
dst="${to_copy[$src]}"
|
|
dir="$(dirname "$dst")"
|
|
file="$(basename "$dst")"
|
|
if [[ ! -d "${repo}/${dir}" ]]; then
|
|
mkdir -p "${repo}/${dir}"
|
|
fi
|
|
rsync -a "$src" "${repo}/${dir}/${file}"
|
|
if [[ $? != 0 ]]; then
|
|
printf 'Copying "%s" to "%s" had an error.\n' "$src" "$dst" >&2
|
|
fi
|
|
done
|
|
|
|
for src in "${!to_rsync[@]}"; do
|
|
dst="${to_rsync[$src]}"
|
|
if [[ ! -d "$src" ]]; then
|
|
printf '"%s" does not exist. Can not copy.\n' "$src" >&2
|
|
else
|
|
(cd "$src" && rsync -a * "${repo}/${dst}/")
|
|
fi
|
|
done
|