Rename bootstrap directory
Renamed bootstrap directory to _bootstrap to conform to default ignore pattern of autostow.sh, and make it visually clear that this is a special directory, not one used for the dotfiles itself.
This commit is contained in:
parent
9932202704
commit
68b0219354
4 changed files with 2 additions and 2 deletions
129
_bootstrap/autostow.sh
Executable file
129
_bootstrap/autostow.sh
Executable file
|
|
@ -0,0 +1,129 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# autostow.sh
|
||||
#
|
||||
# Stow automatic symlinking script
|
||||
#
|
||||
# Invokes stow for every folder within this repository, and that's it.
|
||||
|
||||
ignore="${AUTOSTOW_IGNORED_DIRS}"
|
||||
|
||||
main() {
|
||||
case "$1" in
|
||||
-s | --stow)
|
||||
have_stow
|
||||
stow_dirs
|
||||
exit 0
|
||||
;;
|
||||
-d | --delete)
|
||||
have_stow
|
||||
unstow_dirs
|
||||
exit 0
|
||||
;;
|
||||
-n | --dry-run)
|
||||
have_stow
|
||||
dryrun
|
||||
exit 0
|
||||
;;
|
||||
-v | --version)
|
||||
printf "System bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.2.1\n"
|
||||
;;
|
||||
-h | --help | *)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
}
|
||||
|
||||
stow_dirs() {
|
||||
printf "Creating dotfile symlinks .................................................\n"
|
||||
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
|
||||
printf "Done creating symlinks ....................................................\n"
|
||||
}
|
||||
|
||||
unstow_dirs() {
|
||||
printf "Removing dotfile symlinks .................................................\n"
|
||||
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
|
||||
printf "Done removing symlinks ....................................................\n"
|
||||
}
|
||||
|
||||
dryrun() {
|
||||
printf "Printing processed directories ............................................\n"
|
||||
for d in */; do
|
||||
|
||||
if is_ignored "$d"; then
|
||||
printf "ignoring %s\n" "$d"
|
||||
continue
|
||||
fi
|
||||
|
||||
printf "processing %s\n" "$d"
|
||||
done
|
||||
printf "Done printing directories .................................................\n"
|
||||
}
|
||||
|
||||
is_ignored() {
|
||||
IFS=":"
|
||||
for ign in $ignore; do
|
||||
# it is either passed in through our environment variable
|
||||
if [ "$ign" = "$1" ] || [ "$ign/" = "$1" ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
# or it starts with a _ which is ignored by default (that's the regex).
|
||||
# (using herestring to avoid cat>grep)
|
||||
if grep -q -e '^_[[:alnum:]]\{1,\}' <<<"$1"; then return 0; fi
|
||||
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"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
usage() {
|
||||
printf "%s\n" \
|
||||
"" \
|
||||
" autostow.sh - Automatically stow your dotfiles." \
|
||||
" Uses GNU stow to set up automatic links to any dotfiles in subdirectories of this directory." \
|
||||
"" \
|
||||
" Usage: stow.sh -dhsn" \
|
||||
"" \
|
||||
" Options:" \
|
||||
"" \
|
||||
" -h | --help Print out this help." \
|
||||
"" \
|
||||
" -s | --stow Install dotfiles, by symlinking any directory found next to stow.sh using GNU stow." \
|
||||
"" \
|
||||
" -d | --delete Remove dotfiles, by unlinking any directory found next to stow.sh using GNU stow." \
|
||||
"" \
|
||||
" -n | --dry-run Do not invoke any operation but print out directories affected, simulating a dry-run." \
|
||||
"" \
|
||||
" Note, by default any directory starting with an underscore _directoryname will be ignored." \
|
||||
" Additional folders to ignore can be set through the environment variable AUTOSTOW_IGNORED_DIRS " \
|
||||
" using a colon-separated string: AUTOSTOW_IGNORED_DIRS=\"directories:to:ignore\" " \
|
||||
"" \
|
||||
""
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Loading…
Add table
Add a link
Reference in a new issue