Allow autostow.sh to selectively ignore directories
By default autostow.sh ignores assets/ and bootstrap/ directories. This behavior can be changed through the `AUTOSTOW_IGNORED_DIRS` environment variable. It should contain the name of the directories to ignore, separated by a `:`.
This commit is contained in:
parent
df07a8e8d8
commit
dba47b8e20
1 changed files with 51 additions and 24 deletions
|
@ -6,8 +6,43 @@
|
|||
#
|
||||
# Invokes stow for every folder within this repository, and that's it.
|
||||
|
||||
ignore="${AUTOSTOW_IGNORED_DIRS:-"bootstrap:assets"}"
|
||||
|
||||
main() {
|
||||
case "$1" in
|
||||
-s | --stow)
|
||||
have_stow
|
||||
echo "Creating dotfile symlinks ................................................."
|
||||
stow_dirs
|
||||
echo "Done creating symlinks ...................................................."
|
||||
exit 0
|
||||
;;
|
||||
-d | --delete)
|
||||
have_stow
|
||||
echo "Removing dotfile symlinks ................................................."
|
||||
unstow_dirs
|
||||
echo "Done removing symlinks ...................................................."
|
||||
exit 0
|
||||
;;
|
||||
-v | --version)
|
||||
printf "System bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.2\n"
|
||||
;;
|
||||
-h | --help | *)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
}
|
||||
|
||||
stow_dirs() {
|
||||
for d in */; do
|
||||
|
||||
if is_ignored "$d"; then
|
||||
printf "ignoring %s\n" "$d"
|
||||
continue
|
||||
fi
|
||||
|
||||
printf "stowing %s\n" "$d"
|
||||
stow -S -t ~ "$d"
|
||||
done
|
||||
|
@ -15,11 +50,27 @@ stow_dirs() {
|
|||
|
||||
unstow_dirs() {
|
||||
for d in */; do
|
||||
|
||||
if is_ignored "$d"; then
|
||||
printf "ignoring %s\n" "$d"
|
||||
continue
|
||||
fi
|
||||
|
||||
printf "unstowing %s\n" "$d"
|
||||
stow -D -t ~ "$d"
|
||||
done
|
||||
}
|
||||
|
||||
is_ignored() {
|
||||
IFS=":"
|
||||
for ign in $ignore; do
|
||||
if [ "$ign" == "$1" ] || [ "$ign/" == "$1" ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
have_stow() {
|
||||
if ! type stow >/dev/null 2>&1; then
|
||||
printf "GNU stow needs to be installed for this script to function. Please install stow through your package manager.\n"
|
||||
|
@ -46,28 +97,4 @@ usage() {
|
|||
""
|
||||
}
|
||||
|
||||
main() {
|
||||
case "$1" in
|
||||
-s | --stow)
|
||||
have_stow
|
||||
echo "Creating dotfile symlinks ................................................."
|
||||
stow_dirs
|
||||
echo "Done creating symlinks ...................................................."
|
||||
exit 0
|
||||
;;
|
||||
-d | --delete)
|
||||
have_stow
|
||||
echo "Removing dotfile symlinks ................................................."
|
||||
unstow_dirs
|
||||
echo "Done removing symlinks ...................................................."
|
||||
exit 0
|
||||
;;
|
||||
-h | --help | *)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
|
Loading…
Reference in a new issue