refactor to use scwrypts in setup; use scwrypts everywhere
This commit is contained in:
@@ -1,28 +0,0 @@
|
||||
APPS__PACKAGE_DIR="$HOME/.packages"
|
||||
|
||||
function SETUP__APPS() {
|
||||
STATUS 'starting application source-build installs'
|
||||
|
||||
APPS__SIMPLE_INSTALL 'https://github.com/tiyn/dmenu' 'patched-dmenu'
|
||||
}
|
||||
|
||||
|
||||
function APPS__SIMPLE_INSTALL() {
|
||||
[ ! -d $APPS__PACKAGE_DIR ] && mkdir $APPS__PACKAGE_DIR
|
||||
|
||||
local TARGET="$1"
|
||||
local NAME="$2"
|
||||
local LOCAL_BUILD="$APPS__PACKAGE_DIR/$NAME"
|
||||
|
||||
CHECK "Downloading $NAME"
|
||||
git clone $TARGET $LOCAL_BUILD >>$LOG 2>&1 \
|
||||
&& { OK; cd $LOCAL_BUILD; } || { WARN; return 1; }
|
||||
|
||||
CHECK "Building $NAME"
|
||||
make clean >>$LOG 2>&1 \
|
||||
&& OK || { WARN; return 2; }
|
||||
|
||||
CHECK "Installing $NAME"
|
||||
sudo make install >>$LOG 2>&1 \
|
||||
&& OK || { WARN; return 3; }
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
function SETUP__AWS() {
|
||||
STATUS 'starting aws setup'
|
||||
"$DOTWRYN_PATH/bin/aws/configure"
|
||||
|
||||
STATUS 'getting media from s3'
|
||||
"$DOTWRYN_PATH/bin/aws/s3/sync-media" pull
|
||||
}
|
11
setup/cleanup.zsh
Normal file
11
setup/cleanup.zsh
Normal file
@@ -0,0 +1,11 @@
|
||||
__yN 'keep logfile?' || {
|
||||
rm "$LOGFILE" \
|
||||
|| __ERROR "unable to remote '$LOGFILE'" \
|
||||
;
|
||||
}
|
||||
|
||||
__SUCCESS
|
||||
__SUCCESS '.wryn setup complete; have a nice day :)'
|
||||
__SUCCESS
|
||||
|
||||
exit 0
|
@@ -1,88 +0,0 @@
|
||||
function SETUP__CONFIG() {
|
||||
############################################################################################
|
||||
# ~/.config/THE_REST .wryn/config/THE_REST
|
||||
CONFIG__SYMLINK '../.XCompose' 'xcompose.conf'
|
||||
CONFIG__SYMLINK '../.XConfig' 'xconfig.conf'
|
||||
CONFIG__SYMLINK '../.tmux.conf' 'tmux.conf'
|
||||
CONFIG__SYMLINK '../.xinitrc' 'xinitrc'
|
||||
CONFIG__SYMLINK 'bat/config' 'bat.conf'
|
||||
CONFIG__SYMLINK 'code-activator-zsh/settings.zsh' 'code-activator.conf'
|
||||
CONFIG__SYMLINK 'compton/compton.conf' 'compton.conf'
|
||||
CONFIG__SYMLINK 'git/config' 'git.conf'
|
||||
CONFIG__SYMLINK 'i3/config' 'i3.conf'
|
||||
CONFIG__SYMLINK 'i3/utils' '../bin/i3/utils'
|
||||
CONFIG__SYMLINK 'i3status/config' 'i3status.conf'
|
||||
CONFIG__SYMLINK 'kitty/kitty.conf' 'kitty.conf'
|
||||
CONFIG__SYMLINK 'kitty/theme.conf' '../colorschemes/kitty.main'
|
||||
CONFIG__SYMLINK 'mssqlcli/config' 'mssqlcli.conf'
|
||||
CONFIG__SYMLINK 'pgcli/config' 'pgcli.conf'
|
||||
CONFIG__SYMLINK 'pylintrc' 'pylint.conf'
|
||||
CONFIG__SYMLINK 'ripgrep/config' 'ripgrep.conf'
|
||||
CONFIG__SYMLINK 'scwrypts/config' 'scwrypts.conf'
|
||||
############################################################################################
|
||||
|
||||
CONFIG__TERMINFO
|
||||
|
||||
CONFIG__RC 'zsh'
|
||||
CONFIG__RC 'vim'
|
||||
}
|
||||
|
||||
function CONFIG__SYMLINK() {
|
||||
local LOCAL_CONFIG="$HOME/.config/$1"
|
||||
local DOTWRYN_CONFIG="$DOTWRYN_PATH/config/$2"
|
||||
local FRIENDLY_NAME=$(echo $2 | sed 's/\.conf$//')
|
||||
|
||||
CHECK "linking $FRIENDLY_NAME"
|
||||
{
|
||||
[ ! -d $(dirname $LOCAL_CONFIG) ] && mkdir -p $(dirname $LOCAL_CONFIG)
|
||||
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/setup/terminfo" -type f); do
|
||||
CHECK "adding $(basename $file)"
|
||||
tic -x $file >>$LOG 2>&1 \
|
||||
&& OK || WARN
|
||||
done
|
||||
}
|
||||
|
||||
function CONFIG__RC() {
|
||||
local DEFAULT_CONFIG="$DOTWRYN_PATH/setup/env/env.$1"
|
||||
local LOCAL_CONFIG="$HOME/.config/wryn/env.$1"
|
||||
|
||||
[ -f $LOCAL_CONFIG ] && {
|
||||
WARNING "local $1 configuration exists ($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 up $1 configuration ($LOCAL_CONFIG)"
|
||||
|
||||
case $1 in
|
||||
vim ) COMMENT='"' ;;
|
||||
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 && OK || WARN
|
||||
|
||||
USER_PROMPT 'change local configuration options? [y/N]'
|
||||
READ_K yn
|
||||
|
||||
[[ $yn =~ ^[yY] ]] && {
|
||||
[ ! $EDITOR ] && EDITOR=vi
|
||||
$EDITOR "$HOME/.config/wryn/env.$1"
|
||||
}
|
||||
}
|
117
setup/config.zsh
Normal file
117
setup/config.zsh
Normal file
@@ -0,0 +1,117 @@
|
||||
function SETUP__CONFIG() {
|
||||
__STATUS 'starting application configuration'
|
||||
|
||||
CONFIG_USER_SETTINGS="$DOTWRYN_PATH/config/scwrypts.dotfile.conf" \
|
||||
SCWRYPTS zsh/config/update || return 1
|
||||
|
||||
CONFIG__ZSH || return 2
|
||||
CONFIG__VIM || return 3
|
||||
|
||||
__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
|
||||
|
||||
__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__ENV vim || return 1
|
||||
CONFIG__RC vim || return 2
|
||||
|
||||
__STATUS 'starting vim setup'
|
||||
"$DOTWRYN_PATH/vim/update" \
|
||||
&& __SUCCESS 'completed vim setup' \
|
||||
|| __FAIL 1 'error detected in vim setup (see above)' \
|
||||
;
|
||||
|
||||
CONFIG__VIM_OPEN_IN_PANES_BY_DEFAULT || return 3
|
||||
|
||||
SCWRYPTS zsh/vim/vundle/install || return 4
|
||||
}
|
||||
|
||||
CONFIG__VIM_OPEN_IN_PANES_BY_DEFAULT() {
|
||||
which vim | grep "$HOME/.local/bin/vim" && return 0
|
||||
|
||||
__STATUS 'updating vim to open in panes by default'
|
||||
|
||||
touch "$HOME/.local/bin/vim" \
|
||||
&& chmod +x "$HOME/.local/bin/vim" \
|
||||
|| __FAIL 1 "unable to create '$HOME/.local/bin/vim' executable; does it already exist?" \
|
||||
;
|
||||
|
||||
{ echo '#!/bin/sh'; echo "exec $(which vim) -p "'"$@"'; } > "$HOME/.local/bin/vim" \
|
||||
|| __FAIL 2 "unable to set panes-by-default option" \
|
||||
|
||||
__SUCCESS 'successfully set vim to open in panes by default'
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
|
||||
CONFIG__ENV() {
|
||||
local DEFAULT_CONFIG="$DOTWRYN_PATH/config/dotwryn.env.$1"
|
||||
local LOCAL_CONFIG="$HOME/.config/wryn/env.$1"
|
||||
|
||||
[ -f $LOCAL_CONFIG ] && {
|
||||
__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)"
|
||||
}
|
||||
|
||||
__STATUS "setting up $1 configuration ($LOCAL_CONFIG)"
|
||||
|
||||
case $1 in
|
||||
vim ) COMMENT='"' ;;
|
||||
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" \
|
||||
;
|
||||
|
||||
__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" \
|
||||
;
|
||||
}
|
||||
|
27
setup/env/env.vim
vendored
27
setup/env/env.vim
vendored
@@ -1,27 +0,0 @@
|
||||
" -- RC Resources ----------------------------------------------- {{{
|
||||
let $DOTWRYN=expand("$HOME/.wryn")
|
||||
let $WRYNVIMPATH=expand("$DOTWRYN/vim")
|
||||
let $WRYNVIMRC=expand("$WRYNVIMPATH/rc.vim")
|
||||
let $BASHRC=expand("$HOME/.bashrc")
|
||||
let $ZSHRC=expand("$HOME/.zshrc")
|
||||
" }}}
|
||||
|
||||
" -- Leader bindings -------------------------------------------- {{{
|
||||
let mapleader = "\\"
|
||||
|
||||
nmap <BS> <Nop>
|
||||
let maplocalleader = "\<BS>"
|
||||
" }}}
|
||||
|
||||
" -- Colorscheme Settings --------------------------------------- {{{
|
||||
" favorites : tigrana-256-dark, codedark, lilydjwg_dark, up, skittles_autumn,
|
||||
" ........... vice, lanox, nightsky, made_of_code, moss, skittles_berry, pf_earth
|
||||
"
|
||||
" customs : snow
|
||||
let $COLORSCHEME="default"
|
||||
" }}}
|
||||
|
||||
" -- Web Browser Settings --------------------------------------- {{{
|
||||
" set the webbrowser locally
|
||||
"let $WEBBROWSER=""
|
||||
" }}}
|
75
setup/env/env.zsh
vendored
75
setup/env/env.zsh
vendored
@@ -1,75 +0,0 @@
|
||||
#####################################################################
|
||||
### Path References #################################################
|
||||
#####################################################################
|
||||
|
||||
DOTWRYN="$HOME/.wryn"
|
||||
SFX_PATH="$HOME/Media/sfx"
|
||||
WALLPAPER_PATH="$HOME/Pictures/bg"
|
||||
|
||||
#####################################################################
|
||||
### Application Settings ############################################
|
||||
#####################################################################
|
||||
|
||||
PREFERRED_EDITOR=(vim vi)
|
||||
|
||||
# should play an audio file argument
|
||||
MEDIA_ENGINE='canberra-gtk-play -f'
|
||||
PLAY_SFX () { $DOTWRYN/bin/play-sound $@ >/dev/null 2>&1; }
|
||||
|
||||
RIPGREP_CONFIG_PATH="$HOME/.config/ripgrep/config"
|
||||
TMUX_DEFAULT_SESSION_NAME='wryn'
|
||||
WEBBROWSER='google-chrome-stable'
|
||||
|
||||
#I3__GLOBAL_FONT_SIZE=
|
||||
#I3__DMENU_FONT_SIZE=
|
||||
#I3__BORDER_PIXEL_SIZE=
|
||||
|
||||
DOTWRYN_AWS_PROFILE='yage'
|
||||
DOTWRYN_AWS_REGION='us-east-2'
|
||||
DOTWRYN_AWS_OUTPUT='json'
|
||||
|
||||
S3_SYNC_AWS_PROFILE=$DOTWRYN_AWS_PROFILE
|
||||
S3_SYNC_BUCKET='yage'
|
||||
S3_SYNC_MEDIA=(
|
||||
#'.local/share/dolphin-emu'
|
||||
#'Documents'
|
||||
#'Games/roms'
|
||||
#'Games/wrynscape'
|
||||
'.porn'
|
||||
'Documents'
|
||||
'Media'
|
||||
'Pictures'
|
||||
)
|
||||
|
||||
|
||||
PS1_BRANCH_SYMBOL=''
|
||||
PS1_INDICATOR_SYMBOL='☕'
|
||||
PS1_SEPARATOR='::'
|
||||
PS1_USER='%n'
|
||||
|
||||
WELCOME () {
|
||||
{ figlet 'Welcome, beautiful'; cowsay -p 'damn u sexy'; } | lolcat
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
### External Plugins / Settings #####################################
|
||||
#####################################################################
|
||||
|
||||
EXTERNAL_PLUGINS=(
|
||||
'/usr/share/fzf/key-bindings.zsh'
|
||||
'/usr/share/fzf/completion.zsh'
|
||||
"$DOTWRYN/zsh/plugins/z/z.sh"
|
||||
"$DOTWRYN/zsh/plugins/fzf-tab/fzf-tab.plugin.zsh"
|
||||
"$DOTWRYN/zsh/plugins/code-activator/activator.plugin.zsh"
|
||||
"$DOTWRYN/zsh/plugins/scwrypts/scwrypts.plugin.zsh"
|
||||
"$DOTWRYN/zsh/plugins/ssh/ssh.plugin.zsh"
|
||||
)
|
||||
|
||||
FZF_DEFAULT_OPTS='--reverse'
|
||||
FZF_DEFAULT_COMMAND='rg --files'
|
||||
|
||||
zstyle ':fzf-tab:*' accept-line enter
|
||||
zstyle ':fzf-tab:*' fzf-bindings 'space:accept' ';:toggle'
|
||||
zstyle ':fzf-tab:*' continuous-trigger '/'
|
||||
|
||||
export ZSH_COLOR_UTIL="$DOTWRYN/zsh/plugins/color/color.module.zsh"
|
156
setup/linux
156
setup/linux
@@ -1,156 +0,0 @@
|
||||
#!/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)"
|
||||
cd $DOTWRYN_PATH
|
||||
|
||||
SOURCE_ZSH_SUBMODULE() {
|
||||
local NAME="$1"
|
||||
|
||||
local SUBMODULE_PATH=$(\
|
||||
git config --file "$DOTWRYN_PATH/.gitmodules" --get-regexp "$NAME.path"\
|
||||
| awk '{print $2;}'\
|
||||
)
|
||||
local MODULE="$(ls $DOTWRYN_PATH/$SUBMODULE_PATH/*.module.zsh)"
|
||||
|
||||
source $MODULE
|
||||
}
|
||||
|
||||
INIT() {
|
||||
printf 'initializing required submodules...'
|
||||
git submodule update --init --remote --recursive >/dev/null 2>&1 || {
|
||||
echo 'failed!'
|
||||
echo 'unable to initialize required submodules'
|
||||
exit 1
|
||||
}
|
||||
SOURCE_ZSH_SUBMODULE 'color-zsh'
|
||||
echo 'done!'
|
||||
source "$DOTWRYN_PATH/zsh/utils"
|
||||
clear
|
||||
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/wryn"
|
||||
"$HOME/.local/bin"
|
||||
"$HOME/.packages"
|
||||
"$HOME/.vim/bundle"
|
||||
"$HOME/.vim/colors"
|
||||
)
|
||||
FILES=(
|
||||
"$HOME/.vimrc"
|
||||
"$HOME/.zshrc"
|
||||
)
|
||||
|
||||
for D in $DIRECTORIES; do [ ! -d $D ] && mkdir -p $D; done
|
||||
for F in $FILES; do [ ! -f $F ] && touch $F; done
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
||||
source "$DOTWRYN_PATH/setup/os.setup.zsh"
|
||||
source "$DOTWRYN_PATH/setup/config.setup.zsh"
|
||||
source "$DOTWRYN_PATH/setup/zsh.setup.zsh"
|
||||
source "$DOTWRYN_PATH/setup/vim.setup.zsh"
|
||||
source "$DOTWRYN_PATH/setup/apps.setup.zsh"
|
||||
source "$DOTWRYN_PATH/setup/aws.setup.zsh"
|
||||
|
||||
################################################################################
|
||||
|
||||
################################################################################
|
||||
### Full Setup #################################################################
|
||||
################################################################################
|
||||
|
||||
INIT
|
||||
|
||||
GET_SUDO_PASSWORD
|
||||
SETUP__OS_DEPENDENCY || FATAL 'user abort'
|
||||
MAKE_REQUIRED_DIRECTORY_STRUCTURE
|
||||
|
||||
SETUP__CONFIG || ERROR=1
|
||||
|
||||
SETUP__ZSH || ERROR=2
|
||||
SETUP__VIM || ERROR=3
|
||||
SETUP__APPS || ERROR=4
|
||||
SETUP__AWS || ERROR=5
|
||||
|
||||
CLEANUP $ERROR
|
||||
|
||||
################################################################################
|
||||
|
||||
echo
|
||||
echo
|
||||
SUCCESS
|
||||
SUCCESS '.wryn setup complete; have a nice day :)'
|
||||
SUCCESS
|
||||
echo
|
||||
echo
|
||||
|
||||
exit 0
|
@@ -1,85 +0,0 @@
|
||||
source "$DOTWRYN_PATH/setup/yay.setup.zsh"
|
||||
|
||||
################################################################################
|
||||
### Automated System Dependency Install ########################################
|
||||
################################################################################
|
||||
|
||||
[ $DOTWRYN_PATH ]\
|
||||
&& DEPENDENCY_DIR="$DOTWRYN_PATH/setup/os-dependencies" \
|
||||
|| DEPENDENCY_DIR="${0:a:h}/os-dependencies"
|
||||
|
||||
function SETUP__OS_DEPENDENCY() {
|
||||
local ERROR=0
|
||||
STATUS 'checking os dependencies'
|
||||
|
||||
local OS_NAME=$(lsb_release -is 2>/dev/null | tr '[:upper:]' '[:lower:]')
|
||||
[ ! $OS_NAME ] && {
|
||||
OS_NAME=$(cat /etc/os-release | grep ^ID= | sed 's/^ID=//')
|
||||
}
|
||||
STATUS "detected os '$OS_NAME'"
|
||||
|
||||
case $OS_NAME in
|
||||
arch )
|
||||
OS_INSTALL() { OS_INSTALL__ARCH $@; }
|
||||
WARNING 'base-devel is required; make sure it is installed'
|
||||
YAY__INSTALL_FROM_SOURCE
|
||||
;;
|
||||
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$\|^$TARGET-git$" && 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; }
|
||||
}
|
144
setup/os.zsh
Normal file
144
setup/os.zsh
Normal file
@@ -0,0 +1,144 @@
|
||||
#####################################################################
|
||||
|
||||
SETUP__OS() {
|
||||
__GETSUDO
|
||||
|
||||
local OS_NAME=$(OS__GET_OS)
|
||||
[ ! $OS_NAME ] && __ABORT
|
||||
|
||||
OS__INSTALL_SOURCE_DEPENDENCIES || return 1
|
||||
OS__INSTALL_MANAGED_DEPENDENCIES || return 2
|
||||
OS__MAKE_REQUIRED_RESOURCES || return 3
|
||||
}
|
||||
|
||||
OS__GET_OS() {
|
||||
local OS_NAME=$(lsb_release -is 2>/dev/null | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
[ ! $OS_NAME ] \
|
||||
&& OS_NAME=$(cat /etc/os-release 2>/dev/null | grep '^ID=' | sed 's/^ID=//')
|
||||
|
||||
[ ! $OS_NAME ] \
|
||||
&& __WARNING 'failed to detect operating system' \
|
||||
&& OS_NAME=$(echo -e "arch\ndebian\nother" | __FZF 'select an operating system') \
|
||||
;
|
||||
|
||||
[[ $OS_NAME =~ ^ubuntu$ ]] && OS_NAME=debian
|
||||
|
||||
echo $OS_NAME
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
|
||||
OS__INSTALL_SOURCE_DEPENDENCIES() {
|
||||
case $OS_NAME in
|
||||
arch )
|
||||
SCWRYPTS zsh/git/package/install \
|
||||
'https://aur.archlinux.org/yay.git' \
|
||||
--local-name 'yay' \
|
||||
;
|
||||
;;
|
||||
debian ) ;;
|
||||
* ) ;;
|
||||
esac
|
||||
|
||||
SCWRYPTS zsh/git/package/install \
|
||||
'https://github.com/tiyn/dmenu' \
|
||||
--local-name 'patched-dmenu' \
|
||||
;
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
|
||||
OS__INSTALL_MANAGED_DEPENDENCIES() {
|
||||
local ERRORS=0
|
||||
|
||||
__STATUS 'checking os dependencies'
|
||||
case $OS_NAME in
|
||||
arch )
|
||||
__REMINDER "package 'base-devel' is required"
|
||||
;;
|
||||
debian ) ;;
|
||||
* )
|
||||
OS_NAME='generic'
|
||||
__WARNING "no automated installer available for '$OS_NAME'"
|
||||
;;
|
||||
esac
|
||||
|
||||
for DEPENDENCY in $(cat "$DOTWRYN_PATH/setup/os-dependencies/$OS_NAME.txt")
|
||||
do
|
||||
INSTALL_MANAGED__$OS_NAME $DEPENDENCY
|
||||
done
|
||||
|
||||
[[ $ERRORS -ne 0 ]] && {
|
||||
__WARNING "detected $ERRORS errors; double check warnings before proceeding!"
|
||||
__yN 'continue with install?' && return 0 || __ABORT
|
||||
}
|
||||
|
||||
__SUCCESS 'all dependencies satisfied'
|
||||
return 0
|
||||
}
|
||||
|
||||
INSTALL_MANAGED__arch() {
|
||||
local TARGET="$1"
|
||||
|
||||
__STATUS "checking for $TARGET"
|
||||
|
||||
pacman -Qq | grep -q "^$TARGET$\|^$TARGET-git$" && {
|
||||
__SUCCESS "found installation of '$TARGET'"
|
||||
} || {
|
||||
__WARNING "'$TARGET' not found"
|
||||
|
||||
__STATUS "installing '$TARGET'"
|
||||
sudo pacman -Syu --noconfirm $TARGET \
|
||||
&& __SUCCESS "successfully installed '$TARGET'" \
|
||||
|| __ERROR "failed to install '$TARGET'"
|
||||
}
|
||||
}
|
||||
|
||||
INSTALL_MANAGED__debian() {
|
||||
__STATUS "checking / installing '$1'"
|
||||
sudo apt-get install --yes $1 \
|
||||
&& __SUCCESS "'$1' installed" \
|
||||
|| __ERROR "failed to install $TARGET" \
|
||||
;
|
||||
}
|
||||
|
||||
INSTALL_MANAGED__generic() {
|
||||
command -v $1 >/dev/null 2>&1 \
|
||||
|| __ERROR "could not find '$1'; it's up to you to install this one!"
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
|
||||
OS__MAKE_REQUIRED_RESOURCES() {
|
||||
local ERRORS=0
|
||||
local DIRECTORIES=(
|
||||
"$HOME/.config/wryn"
|
||||
"$HOME/.local/bin"
|
||||
"$HOME/.vim/bundle"
|
||||
"$HOME/.vim/colors"
|
||||
)
|
||||
|
||||
local FILES=(
|
||||
"$HOME/.vimrc"
|
||||
"$HOME/.zshrc"
|
||||
)
|
||||
|
||||
__STATUS 'making required system resources'
|
||||
for D in $DIRECTORIES
|
||||
do
|
||||
[ ! -d $D ] && { mkdir -p $D || __ERROR "failed to create directory '$D'"; }
|
||||
done
|
||||
|
||||
for F in $FILES
|
||||
do
|
||||
[ ! -f $F ] && { touch $F || __ERROR "failed to create file '$F'"; }
|
||||
done
|
||||
|
||||
[[ $ERRORS -eq 0 ]] \
|
||||
&& __SUCCESS 'finished creating system resources' \
|
||||
|| __ERROR 'failed to create system resources' \
|
||||
;
|
||||
|
||||
return $ERRORS
|
||||
}
|
33
setup/requirements.zsh
Normal file
33
setup/requirements.zsh
Normal file
@@ -0,0 +1,33 @@
|
||||
[[ $EUID -eq 0 ]] && { echo 'ERROR::Setup cannot be run as root'; exit 1; }
|
||||
|
||||
#####################################################################
|
||||
|
||||
#printf 'initializing required submodules...' >&2
|
||||
#git submodule update --init --remote --recursive >/dev/null 2>&1 || {
|
||||
# echo 'failed!' >&2
|
||||
# echo 'unable to initialize required submodules' >&2
|
||||
# exit 2
|
||||
#}
|
||||
|
||||
#####################################################################
|
||||
|
||||
# normally "DOTWRYN", but uses "DOTWRYN_PATH" to avoid conflict during setup
|
||||
cd "${0:a:h}"
|
||||
export DOTWRYN_PATH="$(git rev-parse --show-toplevel)"
|
||||
cd "$DOTWRYN_PATH"
|
||||
|
||||
#####################################################################
|
||||
|
||||
_DEPENDENCIES+=(zsh fzf)
|
||||
_REQUIRED_ENV+=()
|
||||
source "$DOTWRYN_PATH/zsh/plugins/scwrypts/zsh/utils/utils.module.zsh" || exit 3
|
||||
|
||||
SCWRYPTS() { CI=1 "$DOTWRYN_PATH/zsh/plugins/scwrypts/scwrypts" -n $1 -- ${@:2}; }
|
||||
|
||||
#####################################################################
|
||||
|
||||
source "$DOTWRYN_PATH/setup/os.zsh"
|
||||
source "$DOTWRYN_PATH/setup/config.zsh"
|
||||
|
||||
#####################################################################
|
||||
clear
|
16
setup/run
Executable file
16
setup/run
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/zsh
|
||||
source ${0:a:h}/requirements.zsh || exit 1
|
||||
################################################################################
|
||||
|
||||
LOGFILE="$HOME/dotwryn-install.log"
|
||||
|
||||
__INFO "installation start : $(date)" 2>> "$LOGFILE"
|
||||
{
|
||||
SETUP__OS || __FAIL 1 'failed to set up os-dependencies (see above)'
|
||||
SETUP__CONFIG || __FAIL 2 'failed to set up program configuration (see above)'
|
||||
} 2>&1 | tee --append "$LOGFILE"
|
||||
|
||||
__INFO "installation complete: $(date)" 2>> "$LOGFILE"
|
||||
|
||||
################################################################################
|
||||
source "$DOTWRYN_PATH/setup/cleanup.zsh"
|
@@ -1,3 +0,0 @@
|
||||
screen-256color-italic|screen with 256 colors and italic,
|
||||
sitm=\E[3m, ritm=\E[23m, kbs=\177,
|
||||
smso=\E[7m, rmso=\E[27m, use=screen-256color,
|
@@ -1,6 +0,0 @@
|
||||
tmux|tmux terminal multiplexer,
|
||||
ritm=\E[23m, rmso=\E[27m, sitm=\E[3m, smso=\E[7m, Ms@,
|
||||
use=xterm+tmux, use=screen,
|
||||
|
||||
tmux-256color|tmux with 256 colors,
|
||||
use=xterm+256setaf, use=tmux,
|
@@ -1,50 +0,0 @@
|
||||
# Reconstructed via infocmp from file: /usr/lib/kitty/terminfo/x/xterm-kitty
|
||||
xterm-kitty|KovIdTTY,
|
||||
am, ccc, hs, km, mc5i, mir, msgr, npc, xenl,
|
||||
colors#0x100, cols#80, it#8, lines#24, pairs#0x7fff,
|
||||
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
|
||||
bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
|
||||
clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
|
||||
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
|
||||
cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
|
||||
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
|
||||
cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
|
||||
dl=\E[%p1%dM, dl1=\E[M, dsl=\E]2;\007, ech=\E[%p1%dX,
|
||||
ed=\E[J, el=\E[K, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l,
|
||||
fsl=^G, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
|
||||
ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
|
||||
indn=\E[%p1%dS,
|
||||
initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
|
||||
kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
|
||||
kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C,
|
||||
ka1=, ka3=, kbs=^?, kc1=, kc3=, kcbt=\E[Z, kcub1=\EOD,
|
||||
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\EOF,
|
||||
kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
|
||||
kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S,
|
||||
kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ,
|
||||
kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
|
||||
kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q,
|
||||
kf27=\E[1;5R, kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR,
|
||||
kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~,
|
||||
kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~,
|
||||
kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R,
|
||||
kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
|
||||
kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
|
||||
kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
|
||||
kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
|
||||
kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
|
||||
kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
|
||||
kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
|
||||
kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
|
||||
kf8=\E[19~, kf9=\E[20~, khlp=, khome=\EOH, kich1=\E[2~,
|
||||
kind=\E[1;2B, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
|
||||
kri=\E[1;2A, kund=, oc=\E]104\007, op=\E[39;49m, rc=\E8,
|
||||
rev=\E[7m, ri=\EM, rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E(B,
|
||||
rmam=\E[?7l, rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l,
|
||||
rmso=\E[27m, rmul=\E[24m, rs1=\E]\E\\\Ec, sc=\E7,
|
||||
setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
|
||||
setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
|
||||
sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
|
||||
sgr0=\E(B\E[m, sitm=\E[3m, smacs=\E(0, smam=\E[?7h,
|
||||
smcup=\E[?1049h, smir=\E[4h, smkx=\E[?1h, smso=\E[7m,
|
||||
smul=\E[4m, tbc=\E[3g, tsl=\E]2;, vpa=\E[%i%p1%dd,
|
@@ -1,34 +0,0 @@
|
||||
function SETUP__VIM() {
|
||||
STATUS 'starting vim setup'
|
||||
"$DOTWRYN_PATH/bin/vim/compile"
|
||||
VIM__SOURCE_RC
|
||||
"$DOTWRYN_PATH/bin/vim/install-plugins"
|
||||
VIM__CREATE_PANE_DEFAULT_APP
|
||||
STATUS 'finished vim setup'
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
|
||||
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__CREATE_PANE_DEFAULT_APP() {
|
||||
which vim | grep "$HOME/.local/bin/vim" && return 0
|
||||
|
||||
CHECK 'updating vim to open in panes by default'
|
||||
{
|
||||
echo '#!/bin/sh'
|
||||
echo "exec $(which vim) -p "'"$@"'
|
||||
} > "$HOME/.local/bin/vim" && OK || WARN
|
||||
chmod +x "$HOME/.local/bin/vim"
|
||||
}
|
@@ -1,17 +0,0 @@
|
||||
YAY__SOURCE_TARGET='https://aur.archlinux.org/yay.git'
|
||||
YAY__LOCAL_PATH="$HOME/.packages/yay"
|
||||
|
||||
YAY__INSTALL_FROM_SOURCE() {
|
||||
CHECK 'verifying yay install'
|
||||
[ -d $YAY__LOCAL_PATH ] \
|
||||
&& { OK; return 0; } || WARN
|
||||
|
||||
CHECK 'downloading yay'
|
||||
git clone $ARCH__YAY_TARGET $YAY__LOCAL_PATH >>$LOG 2>&1\
|
||||
&& OK || { WARN; return 1; }
|
||||
|
||||
cd $YAY__LOCAL_PATH
|
||||
CHECK 'installing yay'
|
||||
yes | makepkg -si >>$LOG 2>&1 \
|
||||
&& OK || { WARN; return 1; }
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
#####################################################################
|
||||
|
||||
function SETUP__ZSH() {
|
||||
ZSH__SET_DEFAULT_SHELL
|
||||
ZSH__SOURCE_RC
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
|
||||
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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user