dotwryn/setup/config.zsh
2024-08-13 12:46:20 -06:00

141 lines
3.3 KiB
Bash

function SETUP__CONFIG() {
STATUS 'starting application configuration'
SCWRYPTS system/config/update || return 1
CONFIG__ZSH || return 2
CONFIG__VIM || return 3
CONFIG__SYSTEM || return 4
SCWRYPTS generate i3 config || return 5
SUCCESS 'finished application configuration'
}
#####################################################################
CONFIG__ZSH() {
#CONFIG__ENV zsh || return 1
#CONFIG__RC zsh || return 2
CONFIG__SET_DEFAULT_SHELL || return 3
}
CONFIG__SET_DEFAULT_SHELL() {
local DEFAULT_SHELL=$(awk -F: -v user="$USER" '$1 == user {print $NF}' /etc/passwd)
[[ $DEFAULT_SHELL =~ zsh ]] && return 0
[ $FORCE_ROOT ] && return 0
STATUS 'setting zsh as default shell'
sudo chsh -s $(which zsh) $(whoami) 2>&1 \
&& SUCCESS "set zsh as default shell for '$USER'" \
|| FAIL 1 'failed to set zsh as default shell' \
;
}
#####################################################################
CONFIG__VIM() {
CONFIG__RC vim || return 1
STATUS 'starting vim setup'
SCWRYPTS --name system/vim/vundle/install --group scwrypts --type zsh || return 1
}
#####################################################################
CONFIG__SYSTEM() {
STATUS "configuring system applications"
local \
SYSTEM_APPLICATION \
SOURCE_DIR SOURCE_CONFIG \
SYSTEM_DIR SYSTEM_CONFIG \
;
for SOURCE_DIR in $(find "$DOTWRYN_PATH/config/system/" -mindepth 1 -maxdepth 1 -type d)
do
SYSTEM_APPLICATION="$(echo "$SOURCE_DIR" | sed 's|.*/||')"
case $SYSTEM_APPLICATION in
( ssh | sshd )
SYSTEM_DIR=/etc/ssh/${SYSTEM_APPLICATION}_config.d
;;
( * )
SYSTEM_DIR=''
;;
esac
[ "$SYSTEM_DIR" ] && sudo [ -d "$SYSTEM_DIR" ] \
|| continue
for SOURCE_CONFIG in $(find "$SOURCE_DIR" -mindepth 1 -maxdepth 1 -type f)
do
SYSTEM_CONFIG="$SYSTEM_DIR/$(basename -- "$SOURCE_CONFIG")"
sudo [ -f "$SYSTEM_CONFIG" ] && {
echo "detected existing config '$SYSTEM_CONFIG'; skipping"
continue
}
sudo ln -s "$SOURCE_CONFIG" "$SYSTEM_CONFIG"
done
done
}
#####################################################################
CONFIG__ENV() {
local DEFAULT_CONFIG="$DOTWRYN_PATH/config/dotwryn.env.$1"
local LOCAL_CONFIG="$HOME/.config/wryn/env.$1"
[ -f $LOCAL_CONFIG ] && {
case $OVERWRITE_EXISTING in
0 ) return 0 ;;
1 )
WARNING "local $1 configuration exists ($LOCAL_CONFIG)"
yN 'overwrite this configuration?' || return 0
mv "$LOCAL_CONFIG" "$LOCAL_CONFIG.bak" >/dev/null 2>&1 \
&& INFO "created backup of local configuration ($LOCAL_CONFIG.bak)"
esac
}
STATUS "setting up $1 configuration ($LOCAL_CONFIG)"
case $1 in
zsh ) COMMENT='#' ;;
esac
{
echo "source $DEFAULT_CONFIG"
echo -e "\\n$COMMENT\n$COMMENT .wryn configuration overrides\n$COMMENT\n"
sed "s/^[^$COMMENT].*/$COMMENT&/" $DEFAULT_CONFIG
} > $LOCAL_CONFIG \
&& SUCCESS "created $1 configuration" \
|| FAIL 1 "unable to create $1 configuration" \
;
EDITOR=vim VISUAL=vim EDIT "$LOCAL_CONFIG"
}
CONFIG__RC() {
local TYPE="$1"
local RC="$HOME/.${TYPE}rc";
local SOURCE_LINE
case $TYPE in
zsh ) SOURCE_LINE="source $DOTWRYN_PATH/zsh/rc" ;;
vim ) SOURCE_LINE="source $DOTWRYN_PATH/vim/rc.vim" ;;
esac
grep -q "^$SOURCE_LINE$" "$RC" \
|| echo "$SOURCE_LINE" >> $RC
grep -q "^$SOURCE_LINE$" "$RC" \
&& SUCCESS "${TYPE}rc is configured correctly" \
|| FAIL 1 "failed to configure ${TYPE}rc" \
;
}