From a843e5236abc7cd31a3a7fd00a5217d1efa82283 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sat, 20 Jul 2024 09:00:06 +0700 Subject: [PATCH] refactor(script/bootstrap): Allow `pre-bootstrap` to be ran automatically by `bootstrap` This will simplify the process of installing the dotfiles while still giving users control --- bootstrap | 26 +++++++++++++++++++++++--- common | 10 ++++++++++ pre-bootstrap | 40 ++++++++++++++++++++++------------------ 3 files changed, 55 insertions(+), 21 deletions(-) create mode 100644 common diff --git a/bootstrap b/bootstrap index 97ce93d..71f3cb0 100755 --- a/bootstrap +++ b/bootstrap @@ -1,6 +1,23 @@ #!/bin/sh -[ $ZI_DOTFILES ] || { >&2 echo "Please run pre-bootstrap first!"; exit 1; } +[ $ZI_DOTFILES ] && { + . $ZI_DOTFILES/common +} || { + [ -f ./common ] || { >&2 echo "Bootstrap should be ran directly from dotfiles directory ('./bootstrap'), or run './pre-bootstrap' before running bootstrap!"; exit 1; } + . ./common +} + +[ $ZI_DOTFILES ] || { + ZI_DOTFILES=$PWD + echo "'./pre-bootstrap' was never ran before. This script will store '$PWD' in \$ZI_DOTFILES as helper variable for automation scripts." + prompt "Run it now? [y/N] " || { >&2 echo "You need to run './pre-bootstrap' before running bootstrap!"; exit 1; } + echo "======include/dotfiles======" + ./pre-bootstrap - + echo "============================" + prompt "Set '$PWD' as dotfiles directory? [y/N] " || exit 1 + ./pre-bootstrap - > $ZI_DOTFILES/.config/zsh/include/dotfiles +} + [ -d $ZI_DOTFILES ] || { >&2 echo "Invalid dotfiles path, please re-run pre-bootstrap!"; exit 1; } . $ZI_DOTFILES/bootstrap-pkgs @@ -91,7 +108,10 @@ ln -si $ZI_DOTFILES/.config/zsh $HOME/.config/zsh echo "Configuring doas..." echo """permit persist :wheel permit nopass root as root""" > /tmp/doas.conf.tmp -echo "======doas.conf======" +echo "=======/etc/doas.conf=======" cat /tmp/doas.conf.tmp -echo "=====================" +echo "============================" $SUDO cp -i /tmp/doas.conf.tmp /etc/doas.conf + +echo "============================" +echo "Bootstrap completed, please restart your shell!" diff --git a/common b/common new file mode 100644 index 0000000..315d0db --- /dev/null +++ b/common @@ -0,0 +1,10 @@ +#!/bin/sh + +prompt() { + printf "$1" + read INPUT + case $INPUT in + [yY] ) return 0 ;; + * ) return 1 ;; + esac; +} diff --git a/pre-bootstrap b/pre-bootstrap index 0388c34..b7b5f31 100755 --- a/pre-bootstrap +++ b/pre-bootstrap @@ -1,29 +1,33 @@ -#!/bin/zsh +#!/bin/sh + +. ./common [ "$1" = "-" ] || { - printf "Experimental script! Run it anyway? (y/N) "; - read choice; - [ "$choice" = "y" ] || exit 1; + prompt 'Experimental script! Run it anyway? [y/N] ' || exit 1 } [ "$(cat README.md | head -n 1)" = "" ] || { - >&2 echo "Current working directory is not the dotfiles is located!"; - >&2 echo "Please 'cd' to the dotfiles directory before running the script."; - exit 1; + >&2 echo "Current working directory is not the dotfiles is located!" + >&2 echo "Please 'cd' to the dotfiles directory before running the script." + exit 1 } -info=""" -######################################################################## -# Please replace '~/.config/zsh/include/dotfiles' with the code above. # -# TIPS: Run './pre-bootstrap - > ~/.config/zsh/include/dotfiles' # -######################################################################## -""" +echo_info() { + echo "########################################################################" + echo "# Please replace '~/.config/zsh/include/dotfiles' with the code above. #" + echo "# TIPS: Run './pre-bootstrap - > ~/.config/zsh/include/dotfiles' #" + echo "########################################################################" +} -echo "#!/bin/zsh" -echo $info +echo_config() { + echo "#!/bin/zsh" + [ "$1" = "-" ] || echo_info -echo """export ZI_DOTFILES="${PWD}" + echo "export ZI_DOTFILES=\"${PWD}\"" + echo "" + echo "[ ! \$ZI_DOTFILES ] && unset ZI_DOTFILES" -[ ! \$ZI_DOTFILES ] && unset ZI_DOTFILES""" + [ "$1" = "-" ] || echo_info +} -echo $info +echo_config $1