new setup version; more modular

This commit is contained in:
Wryn Wagner 2021-09-15 01:48:37 -06:00
parent 15ea50e6ff
commit fff9113216
33 changed files with 540 additions and 317 deletions

View File

@ -1,4 +1,4 @@
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
[ -d "$WALLPAPER_PATH" ] \
&& feh --recursive --randomize --bg-fill "$WALLPAPER_PATH";

View File

@ -1,6 +1,6 @@
#!/bin/sh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
CONFIG_DIR="$DOTWRYN/config/kitty"

View File

@ -1,5 +1,5 @@
#!/bin/sh
source "$HOME/.config/wryn/env/env" 2>/dev/null
source "$HOME/.config/wryn/env/env.zsh" 2>/dev/null
PLAY() {
eval "$MEDIA_ENGINE" "$SFX_PATH/$1"

View File

@ -1,3 +1,3 @@
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
"$DOTWRYN/bin/desktop/youtube-music/controller.sh" next

View File

@ -1,3 +1,3 @@
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
"$DOTWRYN/bin/desktop/youtube-music/controller.sh" playpause

View File

@ -1,3 +1,3 @@
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
"$DOTWRYN/bin/desktop/youtube-music/controller.sh" prev

View File

@ -1,5 +1,5 @@
#!/bin/bash
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
[ ! -d "$HOME/.vim" ] && mkdir "$HOME/.vim"
[ ! -d "$HOME/.vim/colors" ] && mkdir "$HOME/.vim/colors"

View File

@ -1,6 +1,6 @@
#!/bin/sh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
UTIL_BIN="$DOTWRYN/bin/desktop"
APP_BIN="$HOME/.config/wryn/default-applications"

View File

@ -1,5 +1,5 @@
#!/bin/sh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
RESOLUTION='1920x1080';

View File

@ -1,5 +1,5 @@
#!/bin/sh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
NATIVE_MONITOR='eDP1';
CONNECTED_MONITOR=$(xrandr | grep ' connect' | awk '{print $1;}' | grep -v "$NATIVE_MONITOR" | head -n 1);

View File

@ -1,5 +1,5 @@
#!/bin/sh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
NATIVE_MONITOR='eDP1';
HOMEDOCK_MONITOR=$(xrandr | grep ' connect' | awk '{print $1;}' | grep -v "$NATIVE_MONITOR" | head -n 1);

View File

@ -1,5 +1,5 @@
#!/bin/sh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
NATIVE_MONITOR='eDP1';
TV_DISPLAY=$(xrandr | grep ' connect' | awk '{print $1;}' | grep -v "$NATIVE_MONITOR" | head -n 1);

View File

@ -1,5 +1,5 @@
#!/bin/sh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
NATIVE_MONITOR='eDP1';
NATIVE_MODE="$(xrandr | grep -A 2 "$NATIVE_MONITOR" | sed -n '2 p' | awk '{print $1;}')";

View File

@ -1,5 +1,5 @@
#!/bin/zsh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
XSERVER_DIR="$DOTWRYN/config/xorg"
AT_HOME(){

View File

@ -1,6 +1,6 @@
#!/bin/sh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
X11_SCRIPTS='/etc/X11/xinit/xinitrc.d';
if [ -d $X11_SCRIPTS ] ; then

0
env/env → env/env.zsh vendored Executable file → Normal file
View File

301
setup
View File

@ -1,301 +0,0 @@
#!/usr/bin/zsh
################################################################################
### SETUP VERIFICATION #########################################################
################################################################################
DOTWRYN_PATH="$(pwd)"
function CHECK_DIR() {
printf "is DOTWRYN.git installed at '$DOTWRYN_PATH'? [Yn] : "
local yn; read yn
[[ $yn =~ ^[nN] ]] && return 1 || return 0
}
function INSTALL_DEPENDENCIES() {
local OS_NAME=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
local GENERIC_DEPS=(python3 cmake lolcat figlet cowsay)
local ARCH_DEPS=(python cmake lolcat figlet cowsay)
local DEBIAN_DEPS=(python3-dev cmake lolcat figlet cowsay)
MISSING_DEPS=()
echo 'checking dependencies...'
for DEP in $GENERIC_DEPS;
do
command -v $DEP >/dev/null 2>&1 || {
echo "missing '$DEP'"
MISSING_DEPS+=$DEP
}
done
[[ ${#MISSING_DEPS[@]} -eq 0 ]] && {
echo '...all dependencies appear to be satisfied'
} || {
case $OS_NAME in
arch )
sudo pacman -Syu $ARCH_DEPS
;;
debian | ubuntu )
sudo apt-get install $DEBIAN_DEPS
;;
* )
echo "manual dependency installation required for os '$OS_NAME'..."
echo "missing : $MISSING_DEPS"
printf 'are you ready to proceed with setup? [yN] : '
local yn; read yn
[[ $yn =~ ^[yY] ]] && return 0 || return 1
;;
esac
}
}
CHECK_DIR || exit 1
INSTALL_DEPENDENCIES || exit 1
################################################################################
### SHELL SETUP ################################################################
################################################################################
function SOURCE_DOTWRYN_RC {
local HOME_RC="$1";
local WRYN_RC="$2";
[ ! -f "$HOME/$HOME_RC" ] && touch "$HOME/$HOME_RC";
grep "$WRYN_RC" "$HOME/$HOME_RC" && {
echo "already set up $HOME_RC";
} || {
echo "source $WRYN_RC" >> "$HOME/$HOME_RC";
echo "successfully set up $HOME_RC";
}
}
function ENV__SETUP_LOCAL_OVERRIDES() {
local yn
local DEFAULT_SHELL_ENV="$DOTWRYN_PATH/env/env"
local LOCAL_SHELL_ENV="$HOME/.config/wryn/env/env"
[ $LOCAL_SHELL_ENV ] && {
printf 'local env override file detected; overwrite? [yN] : '
read yn
[[ $yn =~ ^[yY] ]] || DO_NOT_OVERWRITE_SHELL=1
}
[[ $DO_NOT_OVERWRITE_SHELL -eq 1 ]] && echo 'skipping shell env setup' || {
echo "source $DOTWRYN_PATH/env/env" > "$LOCAL_SHELL_ENV"
echo -e '\n#\n# ~/.wryn/env/env local overrides\n#\n' >> "$LOCAL_SHELL_ENV"
sed 's/[#]*\(.*\)/#\1/' $DEFAULT_SHELL_ENV >> "$LOCAL_SHELL_ENV"
}
local DEFAULT_VIM_ENV="$DOTWRYN_PATH/env/env.vim"
local LOCAL_VIM_ENV="$HOME/.config/wryn/env/env.vim"
[ $LOCAL_SHELL_ENV ] && {
printf 'local vim env override file detected; overwrite? [yN] : '
read yn
[[ $yn =~ ^[yY] ]] || DO_NOT_OVERWRITE_VIM=1
}
[[ $DO_NOT_OVERWRITE_VIM -eq 1 ]] && echo 'skipping vim env setup' || {
echo "source $DOTWRYN_PATH/env/env.vim" > "$LOCAL_VIM_ENV"
echo -e '\n"\n" ~/.wryn/env/env.vim local overrides\n"\n' >> "$LOCAL_VIM_ENV"
sed 's/["]*\(.*\)/"\1/' $DEFAULT_VIM_ENV >> "$LOCAL_VIM_ENV"
}
}
function SHELL__SETUP {
SOURCE_DOTWRYN_RC '.bashrc' "$DOTWRYN_PATH/zsh/rc";
SOURCE_DOTWRYN_RC '.zshrc' "$DOTWRYN_PATH/zsh/rc";
ENV__SETUP_LOCAL_OVERRIDES;
}
################################################################################
### VIM SETUP ##################################################################
################################################################################
function VIM__UPDATE_COLORSCHEMES() {
$DOTWRYN_PATH/bin/vim/update_colorschemes
}
function VIM__INSTALL_VUNDLE_PLUGINS() {
[ ! -d "$HOME/.vim" ] && mkdir "$HOME/.vim"
[ ! -d "$HOME/.vim/bundle" ] && mkdir "$HOME/.vim/bundle"
[ ! -d "$HOME/.vim/bundle/Vundle.vim" ] && {
echo "installing vundle";
git clone https://github.com/VundleVim/Vundle.vim.git "$HOME/.vim/bundle/Vundle.vim";
}
echo "installing vundle plugins"
vim +PluginInstall +qall;
echo "building plugins"
$DOTWRYN_PATH/bin/vim/rebuild_plugins;
}
function VIM__SETUP() {
echo 'setting up vim';
SOURCE_DOTWRYN_RC '.vimrc' "$DOTWRYN_PATH/vim/rc.vim";
VIM__UPDATE_COLORSCHEMES;
VIM__INSTALL_VUNDLE_PLUGINS;
echo 'vim setup complete';
}
################################################################################
### LINK CONFIGURATION FILES ###################################################
################################################################################
function CONFIG__BASIC_SYMLINK() {
local HOME_CONFIG="$1";
local WRYN_CONFIG="$2";
mv "$HOME_CONFIG" "$HOME_CONFIG.bak" >/dev/null 2>&1;
ln -s "$WRYN_CONFIG" "$HOME_CONFIG";
}
function CONFIG__SYMLINK() {
local CONFIG_DIR="$1";
local FILENAME="$2";
local HOME_CONFIG_DIR="$HOME/.config/$CONFIG_DIR";
local HOME_CONFIG="$HOME_CONFIG_DIR/$FILENAME";
local WRYN_CONFIG="$DOTWRYN_PATH/config/$CONFIG_DIR/$FILENAME";
[ ! -d "$HOME_CONFIG_DIR" ] && mkdir "$HOME_CONFIG_DIR";
CONFIG__BASIC_SYMLINK $HOME_CONFIG $WRYN_CONFIG;
}
function CONFIG__I3() {
CONFIG__SYMLINK "i3" "config";
CONFIG__BASIC_SYMLINK "$HOME/.config/wryn/i3utils" "$DOTWRYN_PATH/config/i3/utils";
echo "linked i3 configuration";
}
function CONFIG__I3STATUS() {
CONFIG__SYMLINK "i3status" "config";
echo "linked i3status configuration";
}
function CONFIG__PGCLI() {
CONFIG__SYMLINK "pgcli" "config";
echo "linked pgcli configuration";
}
function CONFIG__MSSQLCLI() {
CONFIG__SYMLINK "mssqlcli" "config";
echo "linked mssqlcli configuration";
}
function CONFIG__COMPTON() {
CONFIG__SYMLINK "compton" "compton.conf";
echo "linked compton configuration"
}
function CONFIG__KITTY() {
CONFIG__SYMLINK "kitty" "kitty.conf";
CONFIG__SYMLINK "kitty" "theme.conf";
echo "linked kitty configuration"
}
function CONFIG__RIPGREP() {
CONFIG__SYMLINK "ripgrep" "config"
echo "linked ripgrep configuration"
}
function CONFIG__GIT() {
CONFIG__BASIC_SYMLINK "$HOME/.gitconfig" "$DOTWRYN_PATH/config/git/gitconfig";
echo "linked global git configuration"
}
function CONFIG__PYLINT() {
CONFIG__BASIC_SYMLINK "$HOME/.config/pylintrc" "$DOTWRYN_PATH/config/pylint/pylintrc";
echo "linked pylint configuration"
}
function CONFIG__SFX_APPLICATION() {
CONFIG__BASIC_SYMLINK "$HOME/.config/wryn/sfx" "$DOTWRYN_PATH/bin/desktop/sfx/play.sh";
echo "linked xinitrc"
}
function CONFIG__TMUX() {
CONFIG__BASIC_SYMLINK "$HOME/.tmux.conf" "$DOTWRYN_PATH/config/tmux/tmux.conf";
echo "linked tmux configuration"
}
function CONFIG__XINITRC() {
CONFIG__BASIC_SYMLINK "$HOME/.xinitrc" "$DOTWRYN_PATH/config/xorg/xinitrc"
echo "linked xinitrc"
}
function CONFIG__TERMINFO() {
echo "adding terminfo files"
for file in $(find "$DOTWRYN_PATH/config/terminfo" -type f); do
tic -x $file >/dev/null 2>&1 || echo "failed to add $file" ;
done
}
function CLEAN_BACKUP() {
read -p "clean backup files? [Yn] : " yn;
case $yn in
[nN]* ) echo 'skipping cleanup';;
* )
echo 'cleaning backup files';
for file in $(find "$HOME/.config/" -name \*.bak 2>/dev/null); do rm $file && echo cleaned $file; done
for file in $(find "$HOME" -maxdepth 1 -name .\*.bak 2>/dev/null); do rm $file && echo cleaned $file; done
;;
esac
}
function CONFIG__SETUP() {
CONFIG__I3;
CONFIG__I3STATUS;
CONFIG__PGCLI;
CONFIG__MSSQLCLI;
CONFIG__COMPTON;
CONFIG__KITTY;
CONFIG__RIPGREP;
CONFIG__GIT;
CONFIG__PYLINT;
CONFIG__SFX_APPLICATION;
CONFIG__TMUX;
CONFIG__XINITRC;
CONFIG__TERMINFO;
CLEAN_BACKUP
}
################################################################################
### RUN CONFIG #################################################################
################################################################################
[ ! -d "$HOME/.config" ] && mkdir "$HOME/.config";
[ ! -d "$HOME/.config/wryn" ] && mkdir "$HOME/.config/wryn";
[ ! -d "$HOME/.config/wryn/env" ] && mkdir "$HOME/.config/wryn/env";
SHELL__SETUP
VIM__SETUP
CONFIG__SETUP
echo -e "\nsetup complete"

46
setup/dotconfig/setup.zsh Normal file
View File

@ -0,0 +1,46 @@
DOTCONFIG__SETUP() {
############################################################################################
# Friendly Name ~/.config/THE_REST .wryn/config/THE_REST (if different)
CONFIG__SYMLINK 'compton' 'compton/compton.conf'
CONFIG__SYMLINK 'git config' '../.gitconfig' 'git/gitconfig'
CONFIG__SYMLINK 'i3 config' 'i3/config'
CONFIG__SYMLINK 'i3 status' 'i3status/config'
CONFIG__SYMLINK 'i3 utils' 'wryn/i3utils' 'i3/utils'
CONFIG__SYMLINK 'kitty config' 'kitty/kitty.conf'
CONFIG__SYMLINK 'kitty theme' 'kitty/theme.conf'
CONFIG__SYMLINK 'mssqlcli' 'mssqlcli/config'
CONFIG__SYMLINK 'pgcli' 'pgcli/config'
CONFIG__SYMLINK 'pylint global' 'pylintrc' 'pylint/pylintrc'
CONFIG__SYMLINK 'ripgrep' 'ripgrep/config'
CONFIG__SYMLINK 'sfx app' "wryn/sfx" '../bin/desktop/sfx/play.sh'
CONFIG__SYMLINK 'tmux' '../.tmux.conf' 'tmux/tmux.conf'
CONFIG__SYMLINK 'xinitrc' '../.xinitrc' 'xorg/xinitrc'
############################################################################################
CONFIG__TERMINFO
}
function CONFIG__SYMLINK() {
local CONFIG_NAME="$1"
local TARGET="$2"
local LOCAL_CONFIG="$HOME/.config/$TARGET"
# don't use third argument if config layout is identical
[ $3 ] && TARGET="$3"
local DOTWRYN_CONFIG="$DOTWRYN_PATH/config/$TARGET"
CHECK "linking $1"
{
mv "$LOCAL_CONFIG" "$LOCAL_CONFIG.bak"
ln -s "$DOTWRYN_CONFIG" "$LOCAL_CONFIG"
} >>$LOG 2>&1 && OK || WARN
}
function CONFIG__TERMINFO() {
for file in $(find "$DOTWRYN_PATH/config/terminfo" -type f); do
CHECK "adding '$file' terminfo"
tic -x $file >>$LOG 2>&1 \
&& OK || WARN
done
}

129
setup/linux Executable file
View File

@ -0,0 +1,129 @@
#!/usr/bin/zsh
[[ $EUID -eq 0 ]] && { echo 'ERROR::Setup cannot be run as root'; exit 1; }
command -v zsh >/dev/null || { echo 'ERROR::`zsh` required'; exit 1; }
################################################################################
### Pre/Post Processing ########################################################
################################################################################
cd "${0:a:h}"
export DOTWRYN_PATH="$(git rev-parse --show-toplevel)"
INIT() {
source "$DOTWRYN_PATH/zsh/utils/color.zsh"
source "$DOTWRYN_PATH/zsh/utils/user-input.zsh"
STATUS 'starting .wryn install'
export LOG="$HOME/dotwryn-install.log"
echo "install start : $(date)" > $LOG
STATUS "subprocess log can be found here : $LOG"
}
CLEANUP() {
local ERROR="$1"
CLEAN_BACKUP
[ ! $ERROR ] \
&& USER_PROMPT "keep logfile ($LOG)? [y/N]" \
|| USER_PROMPT "keep logfile ($LOG)? [Y/n]" \
;
READ_K yn
case $yn in
y | Y )
STATUS 'keeping logfile'
;;
n | N )
CHECK 'removing logfile'
rm $LOG && OK || WARN "unable to remove '$LOG'"
;;
* )
[ $ERROR ] && { STATUS 'keeping logfile'; return; }
CHECK 'removing logfile'
rm $LOG && OK || WARN "unable to remove '$LOG'"
;;
esac
}
CLEAN_BACKUP() {
USER_PROMPT 'clean backup files? [Y/n]'
READ_K yn
case $yn in
[nN]* ) STATUS 'skipping cleanup' ;;
* )
STATUS 'cleaning backup files'
for file in $(find "$HOME/.config/" -name \*.bak 2>/dev/null)
do
CHECK "removing '$file'"
rm $file >>$LOG 2>&1 && OK || WARN
done
for file in $(find "$HOME" -maxdepth 1 -name .\*.bak 2>/dev/null)
do
CHECK "removing '$file'"
rm $file >>$LOG 2>&1 && OK || WARN
done
;;
esac
}
################################################################################
### General Setup Utilities ####################################################
################################################################################
GET_SUDO_PASSWORD() {
sudo echo hi >/dev/null 2>&1
}
MAKE_REQUIRED_DIRECTORY_STRUCTURE() {
DIRECTORIES=(
"$HOME/.config"
"$HOME/.config/wryn"
"$HOME/.config/wryn/env"
"$HOME/.vim"
"$HOME/.vim/colors"
"$HOME/.vim/bundle"
)
FILES=(
"$HOME/.zshrc"
"$HOME/.vimrc"
)
for D in $DIRECTORIES; do [ ! -d $D ] && mkdir $D; done
for F in $FILES; do [ ! -f $F ] && touch $F; done
}
################################################################################
source "$DOTWRYN_PATH/setup/os-dependencies/setup.zsh"
source "$DOTWRYN_PATH/setup/zsh/setup.zsh"
source "$DOTWRYN_PATH/setup/vim/setup.zsh"
source "$DOTWRYN_PATH/setup/dotconfig/setup.zsh"
################################################################################
################################################################################
### Full Setup #################################################################
################################################################################
INIT
GET_SUDO_PASSWORD
OS_DEPENDENCY__SETUP || FATAL 'user abort'
MAKE_REQUIRED_DIRECTORY_STRUCTURE
ZSH__SETUP || ERROR=1
VIM__SETUP || ERROR=2
DOTCONFIG__SETUP || ERROR=3
CLEANUP $ERROR
################################################################################
SUCCESS
SUCCESS '.wryn setup complete; have a nice day :)'
SUCCESS
echo
echo
exit 0

View File

@ -0,0 +1,5 @@
cmake
cowsay
figlet
lolcat
python

View File

@ -0,0 +1,5 @@
cmake
cowsay
figlet
lolcat
python3-dev

View File

@ -0,0 +1,5 @@
cmake
cowsay
figlet
lolcat
python3

View File

@ -0,0 +1,78 @@
################################################################################
### Automated System Dependency Install ########################################
################################################################################
[ $DOTWRYN_PATH ]\
&& DEPENDENCY_DIR="$DOTWRYN_PATH/setup/os-dependencies" \
|| DEPENDENCY_DIR="${0:a:h}"
function OS_DEPENDENCY__SETUP() {
local ERROR=0
STATUS 'checking os dependencies'
local OS_NAME=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
STATUS "detected os '$OS_NAME'"
case $OS_NAME in
arch )
OS_INSTALL() { OS_INSTALL__ARCH $@; }
;;
debian | ubuntu )
OS_INSTALL() { OS_INSTALL__DEBIAN $@; }
OS_NAME='debian'
;;
* )
WARNING
WARNING "no automated installer available for '$OS_NAME'"
WARNING "if dependency shows a warning, install the indicated package"
WARNING
OS_INSTALL() { OS_INSTALL__GENERIC $@; }
OS_NAME='generic'
;;
esac
for DEPENDENCY in $(cat "$DEPENDENCY_DIR/$OS_NAME.txt")
do
OS_INSTALL $DEPENDENCY || ERROR=1
done
unset -f OS_INSTALL
[[ $ERROR -eq 0 ]] && {
SUCCESS 'all dependencies satisfied'
USER_PROMPT 'continue with install? [Y/n]'
READ_K yn
[[ $yn =~ ^[nN] ]] && ERROR=1; true
} || {
WARNING 'detected errors; double check warnings before proceeding!'
USER_PROMPT 'continue with install? [y/N]'
READ_K yn
[[ $yn =~ ^[yY] ]] && ERROR=0
}
return $ERROR
}
function OS_INSTALL__ARCH() {
local TARGET="$1"
CHECK "checking for $TARGET"
pacman -Qq | grep -q "^$TARGET$" && OK || {
WARN "$TARGET not found"
CHECK "installing $TARGET"
sudo pacman -Syu --noconfirm $TARGET >>$LOG 2>&1 \
&& OK || { WARN "failed to install $TARGET"; return 1; }
}
}
function OS_INSTALL__DEBIAN() {
local TARGET="$1"
CHECK "checking / installing $PACKAGE"
sudo apt-get install --yes $PACKAGE >>$LOG 2>&1 \
&& OK || { WARN "failed to install $TARGET"; return 1; }
}
function OS_INSTALL__GENERIC() {
local COMMAND="$1"
CHECK "checking for $COMMAND"
command -v $COMMAND >/dev/null 2>&1 \
&& OK || { WARN; return 1; }
}

80
setup/vim/setup.zsh Normal file
View File

@ -0,0 +1,80 @@
#####################################################################
function VIM__SETUP() {
VIM__SOURCE_RC
VIM__SET_LOCAL_CONFIG
VIM__UPDATE_COLORSCHEMES
VIM__INSTALL_VUNDLE_PLUGINS
}
VIM__VUNDLE_TARGET='https://github.com/VundleVim/Vundle.vim.git'
VIM__VUNDLE_LOCAL="$HOME/.vim/bundle/Vundle.vim"
#####################################################################
function VIM__SOURCE_RC() {
local LOCAL_VIMRC="$HOME/.vimrc";
local SOURCE_LINE="source $DOTWRYN_PATH/vim/rc.vim";
grep -q "^$SOURCE_LINE$" $LOCAL_VIMRC && {
STATUS 'already set up vimrc'
} || {
CHECK 'setting up vimrc'
echo $SOURCE_LINE >> $LOCAL_VIMRC \
&& OK || WARN
}
}
function VIM__SET_LOCAL_CONFIG() {
local DEFAULT_CONFIG="$DOTWRYN_PATH/env/env.vim"
local LOCAL_CONFIG="$HOME/.config/wryn/env/env.vim"
[ -f $LOCAL_CONFIG ] && {
WARNING "local vim env configuration ($LOCAL_CONFIG)"
USER_PROMPT 'overwrite? [y/N]'
READ_K yn
[[ $yn =~ ^[yY] ]] && {
CHECK "backing up local copy ($LOCAL_CONFIG.bak)"
mv "$LOCAL_CONFIG" "$LOCAL_CONFIG.bak" && OK || WARN
} || {
STATUS 'skipping'
return
}
}
CHECK "setting vim configuration file ($LOCAL_CONFIG)"
{
echo "source $DEFAULT_CONFIG"
echo -e '\n"\n" .wryn configuration overrides\n"\n'
sed 's/["]*\(.*\)/"\1/' $DEFAULT_CONFIG
} > $LOCAL_CONFIG && OK || WARN
}
function VIM__UPDATE_COLORSCHEMES() {
CHECK 'updating colorschemes'
$DOTWRYN_PATH/bin/vim/update_colorschemes >>$LOG 2>&1\
&& OK || WARN
}
function VIM__INSTALL_VUNDLE_PLUGINS() {
[ ! -d "$HOME/.vim/bundle/Vundle.vim" ] && {
CHECK 'installing Vundle.vim'
git clone $VIM__VUNDLE_TARGET $VIM__VUNDLE_LOCAL >>$LOG 2>&1 \
&& OK || { WARN; return 1; }
} || {
CHECK 'updating Vundle.vim'
local PREV_DIR=$(pwd)
cd $VIM__VUNDLE_LOCAL >>$LOG 2>&1 \
&& git pull >>$LOG 2>&1 \
&& OK || WARN 'unable to pull latest Vundle.vim'
cd $PREV_DIR >>$LOG 2>&1
}
CHECK 'installing vundle plugins'
vim +PluginInstall +qall \
&& OK || WARN
STATUS 'building plugins'
$DOTWRYN_PATH/bin/vim/rebuild_plugins
}

54
setup/zsh/setup.zsh Normal file
View File

@ -0,0 +1,54 @@
#####################################################################
function ZSH__SETUP() {
ZSH__SET_DEFAULT_SHELL
ZSH__SOURCE_RC
ZSH__SET_LOCAL_CONFIG
}
#####################################################################
function ZSH__SET_DEFAULT_SHELL() {
local DEFAULT_SHELL=$(awk -F: -v user="$USER" '$1 == user {print $NF}' /etc/passwd)
CHECK 'setting zsh as default shell'
sudo chsh -s $(which zsh) $(whoami)>>$LOG 2>&1 \
&& OK || WARN 'failed to set zsh as default shell'
}
function ZSH__SOURCE_RC() {
local LOCAL_ZSHRC="$HOME/.zshrc";
local SOURCE_LINE="source $DOTWRYN_PATH/zsh/rc";
grep -q "^$SOURCE_LINE$" $LOCAL_ZSHRC && {
STATUS 'already set up zshrc'
} || {
CHECK 'setting up zshrc'
echo $SOURCE_LINE >> $LOCAL_ZSHRC \
&& OK || WARN
}
}
function ZSH__SET_LOCAL_CONFIG() {
local DEFAULT_CONFIG="$DOTWRYN_PATH/env/env.zsh"
local LOCAL_CONFIG="$HOME/.config/wryn/env/env.zsh"
[ -f $LOCAL_CONFIG ] && {
WARNING "local zsh env configuration ($LOCAL_CONFIG)"
USER_PROMPT 'overwrite? [y/N]'
READ_K yn
[[ $yn =~ ^[yY] ]] && {
CHECK "backing up local copy ($LOCAL_CONFIG.bak)"
mv "$LOCAL_CONFIG" "$LOCAL_CONFIG.bak" && OK || WARN
} || {
STATUS 'skipping'
return
}
}
CHECK "setting zsh configuration file ($LOCAL_CONFIG)"
{
echo "source $DEFAULT_CONFIG"
echo -e '\n#\n# .wryn configuration overrides\n#\n'
sed 's/[#]*\(.*\)/#\1/' $DEFAULT_CONFIG
} > $LOCAL_CONFIG && OK || WARN
}

2
zsh/rc
View File

@ -1,6 +1,6 @@
#!/bin/zsh
source "$HOME/.config/wryn/env/env"
source "$HOME/.config/wryn/env/env.zsh"
# --- load custom plugins ------------------------------------------

21
zsh/utils/color.zsh Normal file
View File

@ -0,0 +1,21 @@
#!/bin/zsh
[ ! $COLOR_PATH ] && COLOR_PATH="${0:a:h}/color"
# use colors by name
source "$COLOR_PATH/names.zsh"
# console message helper function
source "$COLOR_PATH/console-color-out.zsh"
# write full line messages with semantic name
# e.g. 'ERROR : something bad happened' (in red)
source "$COLOR_PATH/messages.zsh"
# two-piece message, check message >> run some stuff >> status
# the status appears on the same line as the check
#
# e.g. 'CHECK : installing something... ✔ OK'
source "$COLOR_PATH/check.zsh"

26
zsh/utils/color/check.zsh Normal file
View File

@ -0,0 +1,26 @@
function CHECK() {
SINGLE_LINE=1 CONSOLE_COLOR_OUT $WHITE $PREFIX_CHK $@'... '
}
function CHECK_RESULT() {
local color="$1"
local output="$2"
printf "\\033[$color""m$output\\033[0m\n"
}
function OK() {
CHECK_RESULT $LIGHT_GREEN '✔ OK'
[ $1 ] && SUCCESS $@
return 0
}
function WARN() {
CHECK_RESULT $YELLOW '⚠ WARN'
[ $1 ] && WARNING $@
return 0
}
function FAIL() {
CHECK_RESULT $LIGHT_RED '✖ FAIL'
FATAL $@
}

View File

@ -0,0 +1,19 @@
[ ! $PREFIX_ERR ] && PREFIX_ERR='ERROR '
[ ! $PREFIX_FAT ] && PREFIX_FAT='FATAL '
[ ! $PREFIX_WRN ] && PREFIX_WRN='WARNING'
[ ! $PREFIX_SCS ] && PREFIX_SCS='SUCCESS'
[ ! $PREFIX_STS ] && PREFIX_STS='STATUS '
[ ! $PREFIX_USR ] && PREFIX_USR='USER '
[ ! $PREFIX_BLK ] && PREFIX_BLK=' '
[ ! $PREFIX_CHK ] && PREFIX_CHK='CHECK '
function CONSOLE_COLOR_OUT() {
local color="$1"
local prefix="$2"
local message="\\033[$color""m$prefix :: ${@:3}\\033[0m"
[ ! $SINGLE_LINE ] && message="$message\n"
printf $message
}

View File

@ -0,0 +1,29 @@
function ERROR() {
CONSOLE_COLOR_OUT $RED $PREFIX_ERR $@
}
function FATAL() {
ERROR $@
CONSOLE_COLOR_OUT $RED $PREFIX_FAT 'exiting'
exit 1
}
function WARNING() {
CONSOLE_COLOR_OUT $ORANGE $PREFIX_WRN $@
}
function STATUS() {
CONSOLE_COLOR_OUT $PURPLE $PREFIX_STS $@
}
function SUCCESS() {
CONSOLE_COLOR_OUT $GREEN $PREFIX_SCS $@
}
function USER_PROMPT() {
SINGLE_LINE=1 CONSOLE_COLOR_OUT $CYAN $PREFIX_USR $@
}
function MENU() {
CONSOLE_COLOR_OUT $YELLOW $PREFIX_BLK $@
}

23
zsh/utils/color/names.zsh Normal file
View File

@ -0,0 +1,23 @@
BLACK='0;30'
DARK_GRAY='1;30'
RED='0;31'
LIGHT_RED='1;31'
GREEN='0;32'
LIGHT_GREEN='1;32'
ORANGE='0;33'
YELLOW='1;33'
BLUE='0;34'
LIGHT_BLUE='1;34'
PURPLE='0;35'
LIGHT_PURPLE='1;35'
CYAN='0;36'
LIGHT_CYAN='1;36'
LIGHT_GRAY='0;37'
WHITE='1;37'

View File

4
zsh/utils/user-input.zsh Normal file
View File

@ -0,0 +1,4 @@
function READ_K() {
read -k $1
echo
}