install: require -n to perform dry run
This commit is contained in:
parent
c41b60a78b
commit
69f142aed8
2 changed files with 30 additions and 22 deletions
|
@ -7,7 +7,7 @@ Always evolving...
|
||||||
```bash
|
```bash
|
||||||
$ git clone https://github.com/fschauen/dotfiles.git $HOME/.dotfiles
|
$ git clone https://github.com/fschauen/dotfiles.git $HOME/.dotfiles
|
||||||
$ cd $HOME/.dotfiles
|
$ cd $HOME/.dotfiles
|
||||||
$ ./install.sh -f # omit -f for a dry run
|
$ ./install.sh
|
||||||
$ ./unlock.sh # decrypt the SSH configuration
|
$ ./unlock.sh # decrypt the SSH configuration
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
50
install.sh
50
install.sh
|
@ -37,20 +37,13 @@ load_config() {
|
||||||
. "$config"
|
. "$config"
|
||||||
}
|
}
|
||||||
|
|
||||||
is_dry_run() { [ "$DRY_RUN" = "yes" ]; }
|
|
||||||
|
|
||||||
move_aside() {
|
move_aside() {
|
||||||
backup="$1.$(date +%s)"
|
backup="$1.$(date +%s)"
|
||||||
echo "${red}WARNING:$sgr0 moving '$1' to '$backup'"
|
echo "${red}WARNING:$sgr0 moving '$1' to '$backup'"
|
||||||
is_dry_run || mv "$1" "$backup"
|
$cmd mv "$1" "$backup"
|
||||||
}
|
}
|
||||||
|
|
||||||
greeting() {
|
greeting() {
|
||||||
is_dry_run && {
|
|
||||||
echo "${yellow}Performing dry run (use -f to actually make changes).$sgr0"
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "Deploying dotfiles:"
|
echo "Deploying dotfiles:"
|
||||||
echo " Source: $cyan$dotfiles$sgr0"
|
echo " Source: $cyan$dotfiles$sgr0"
|
||||||
echo " Destination: $cyan$DESTDIR$sgr0"
|
echo " Destination: $cyan$DESTDIR$sgr0"
|
||||||
|
@ -68,7 +61,7 @@ make_dir() {
|
||||||
echo "${green}OK:$sgr0 $1"
|
echo "${green}OK:$sgr0 $1"
|
||||||
else
|
else
|
||||||
echo "${yellow}MKDIR:$sgr0 $1"
|
echo "${yellow}MKDIR:$sgr0 $1"
|
||||||
is_dry_run || mkdir -vp "$1"
|
$cmd mkdir -vp "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +73,7 @@ make_link() {
|
||||||
else
|
else
|
||||||
[ -e "$link" ] && move_aside "$link"
|
[ -e "$link" ] && move_aside "$link"
|
||||||
echo "${yellow}LINK:$sgr0 $link $blue->$sgr0 $target"
|
echo "${yellow}LINK:$sgr0 $link $blue->$sgr0 $target"
|
||||||
is_dry_run || ln -sf "$target" "$link"
|
$cmd ln -sf "$target" "$link"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,25 +99,18 @@ EOF
|
||||||
else
|
else
|
||||||
[ -f "$user_config" ] && move_aside "$user_config"
|
[ -f "$user_config" ] && move_aside "$user_config"
|
||||||
echo "${yellow}WRITE:$sgr0 $user_config with '$GIT_USER <$GIT_EMAIL>'"
|
echo "${yellow}WRITE:$sgr0 $user_config with '$GIT_USER <$GIT_EMAIL>'"
|
||||||
is_dry_run || cp -f "$temp_git" "$user_config"
|
$cmd cp -f "$temp_git" "$user_config"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: $(basename "$0") [-h] [-f]"
|
echo "Usage: $(basename "$0") [-h] [-n]"
|
||||||
echo ""
|
echo ""
|
||||||
echo " -h print this help and exit"
|
echo " -h print this help and exit"
|
||||||
echo " -f modify filesystem rather than dry run"
|
echo " -n perform dry run"
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
execute() {
|
||||||
DRY_RUN=yes
|
|
||||||
while getopts 'fh' opt; do case "$opt" in
|
|
||||||
f) DRY_RUN=no;;
|
|
||||||
h) usage; exit 0;;
|
|
||||||
*) usage; exit 1;;
|
|
||||||
esac done
|
|
||||||
|
|
||||||
load_config || error "could not load config.sh"
|
load_config || error "could not load config.sh"
|
||||||
|
|
||||||
[ -n "$DESTDIR" ] || error "\$DESTDIR must be set in config.sh"
|
[ -n "$DESTDIR" ] || error "\$DESTDIR must be set in config.sh"
|
||||||
|
@ -153,5 +139,27 @@ main() {
|
||||||
make_git_user_config
|
make_git_user_config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
while getopts 'hn' opt; do
|
||||||
|
case "$opt" in
|
||||||
|
n) # dry run
|
||||||
|
cmd=echo
|
||||||
|
echo "${yellow}Performing dry run (no changes will be made).${sgr0}"
|
||||||
|
echo
|
||||||
|
;;
|
||||||
|
h) # help
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*) # invalid option
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
execute
|
||||||
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue