dotfiles/home/.local/bin/scripts/cli/dot-put

66 lines
1 KiB
Plaintext
Raw Normal View History

2024-02-17 21:50:24 +00:00
#!/bin/bash
set -euo pipefail
dotdir="$HOME/dots"
2024-02-18 19:32:00 +00:00
# the trailing slashes are important here!
dothome="$dotdir/home/"
dotroot="$dotdir/root/"
2024-02-17 21:50:24 +00:00
2024-02-17 22:11:38 +00:00
usage() {
echo "$0"
echo
echo "Usage: $0 [options] <file> <file...>
Options:
-h, --help Print this usage message.
Positional arguments:
file Path to be copied to dotfiles.
Details:
A script to quickly copy specified files to dotfile directory.
"
}
dotcopy() {
2024-02-18 19:32:00 +00:00
syspath="$(realpath "$1")"
2024-02-17 22:11:38 +00:00
if [[ "$syspath" == "$HOME"* ]]; then
dotpath="${syspath/#$HOME/$dothome}"
else
dotpath="$dotroot$syspath"
fi
# Ensure the destination directory exists
mkdir -p "$(dirname "$dotpath")"
cp -vi "$syspath" "$dotpath"
}
getopt=$(getopt \
--longoptions=help \
--options=h \
-- "$@") || exit 1
eval set -- "${getopt}"
while [ $# -gt 0 ]; do
case "$1" in
-h | --help)
usage
exit 0
;;
--)
shift 1
break
;;
esac
done
if [ $# -eq 0 ]; then
echo "No paths specified" >&2
exit 1
2024-02-17 21:50:24 +00:00
fi
2024-02-17 22:11:38 +00:00
for arg in "$@"; do
dotcopy "$arg"
done