diff --git a/.gitignore b/.gitignore index ebb696b..0984bd9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ **/tmp +**/logs **/.env **/.env.old /docker-compose.yml diff --git a/config/config.sh b/config/config.sh index 40e501a..76007c5 100644 --- a/config/config.sh +++ b/config/config.sh @@ -1,11 +1,11 @@ #!/bin/bash -export GLD_dotfiles=( +export core__dotfiles=( "aliases" "functions" ) -export GLD_apt_packages=( +export core__apt_packages=( "apt-transport-https" "build-essential" "ca-certificates" @@ -24,7 +24,7 @@ export GLD_apt_packages=( "zsh" ) -export GLD_snap_packages=( +export core__snap_packages=( "code --classic" "discord" "gimp" @@ -35,25 +35,25 @@ export GLD_snap_packages=( "vlc" ) -export GLD_brew_formulaes=( +export core__brew_formulaes=( "thefuck" ) -export GLD_brew_k8s_formulaes=( +export core__brew_k8s_formulaes=( "kubectl" "kubectx" "kubeseal" "helm" ) -export GLD_omz_plugins=( +export core__omz_plugins=( "zsh-autosuggestions" "zsh-completions" "zsh-history-substring-search" "zsh-syntax-highlighting" ) -export GLD_vscode_extensions=( +export core__vscode_extensions=( "ms-azuretools.vscode-docker" "dracula-theme.theme-dracula" "eamodio.gitlens" diff --git a/config/ui.sh b/config/ui.sh index b14e1c7..6d7e0b5 100644 --- a/config/ui.sh +++ b/config/ui.sh @@ -1,10 +1,10 @@ #!/bin/bash -ui_error() { echo -e "\e[31m[x] $*.\e[0m"; } -ui_wip() { echo -e "\e[33m[-] $*...\e[0m"; } -ui_success() { echo -e "\e[32m[v] $* !\e[0m"; } -ui_info() { echo -e "\e[34m[?] $*;\e[0m"; } -ui_cmd() { echo -e "\e[1;30;107m[$] $*\e[0m"; } +core__ui_error() { echo -e "\e[31m[x] $*.\e[0m"; } +core__ui_wip() { echo -e "\e[33m[-] $*...\e[0m"; } +core__ui_success() { echo -e "\e[32m[v] $* !\e[0m"; } +core__ui_info() { echo -e "\e[34m[?] $*;\e[0m"; } +core__ui_cmd() { echo -e "\e[1;30;107m[$] $*\e[0m"; } -ui_start() { ui_wip "starting the action"; sleep 1; } -ui_done() { ui_success "action done"; sleep 2; } +core__ui_start() { core__ui_wip "starting the action"; sleep 1; } +core__ui_done() { core__ui_success "action done"; sleep 2; } diff --git a/config/utils.sh b/config/utils.sh index 75d3775..4edeaa9 100644 --- a/config/utils.sh +++ b/config/utils.sh @@ -3,54 +3,85 @@ # shellcheck source=/dev/null source "$PWD"/config/config.sh -function GLD_apt_packages_install () { +function foo () { + echo "bar" +} + +function core__log_cmd () { + if [[ ! -d "logs/" ]]; then + core__ui_info "/logs folder not found; creating" + mkdir "logs" + fi + date_format='+%Y-%m-%dT%H:%M:%S.%3NZ' + logfile="logs/GLD-$(date '+%Y-%m-%d').log" + exit_code=$1 + cmd=$2 + if [[ exit_code -ne 0 ]] ; then + message="$(date $date_format) - FAIL [$exit_code] \"$cmd\"" + else + message="$(date $date_format) - INFO \"$cmd\"" + fi + echo "$message" >> "$logfile" +} + + + +function core__install__apt_packages () { ARRAY=$* for i in $ARRAY; do if ! command -v "$i" &> /dev/null; then - ui_info "installing \"$i\" binary" + core__ui_info "installing \"$i\" binary" exec=(sudo apt install "$i" -y) else - ui_info "upgrade \"$i\" binary because already exist" + core__ui_info "upgrade \"$i\" binary because already exist" exec=(sudo apt upgrade "$i" -y) fi - ui_cmd "${exec[@]}" ; "${exec[@]}" + core__ui_cmd "${exec[@]}" ; "${exec[@]}" + exit_code=$? + core__log_cmd $exit_code "${exec[*]}" done } -function GLD_brew_formulaes_install () { +function core__brew_formulaes_install () { ARRAY=$* for i in $ARRAY; do if ! command -v "$i" &> /dev/null; then - ui_info "installing \"$i\" binary" + core__ui_info "installing \"$i\" binary" exec=(brew install "$i") else - ui_info "upgrade \"$i\" binary because already exist" + core__ui_info "upgrade \"$i\" binary because already exist" exec=(brew upgrade "$i") fi - ui_cmd "${exec[@]}" ; "${exec[@]}" + core__ui_cmd "${exec[@]}" ; "${exec[@]}" + exit_code=$? + core__log_cmd $exit_code "${exec[*]}" done } -function GLD_snap_packages_install () { +function core__snap_packages_install () { - for ((i = 0; i < ${#GLD_snap_packages[@]}; i++)) ; do - if ! command -v "${GLD_snap_packages[$i]}" &> /dev/null; then - ui_info "installing \"${GLD_snap_packages[$i]}\" binary" - exec=(sudo snap install "${GLD_snap_packages[$i]}") + for ((i = 0; i < ${#core__snap_packages[@]}; i++)) ; do + if ! command -v "${core__snap_packages[$i]}" &> /dev/null; then + core__ui_info "installing \"${core__snap_packages[$i]}\" binary" + exec=(sudo snap install "${core__snap_packages[$i]}") else - ui_info "upgrade \"${GLD_snap_packages[$i]}\" binary because already exist" - exec=(sudo snap refresh "${GLD_snap_packages[$i]}") + core__ui_info "upgrade \"${core__snap_packages[$i]}\" binary because already exist" + exec=(sudo snap refresh "${core__snap_packages[$i]}") fi - ui_cmd "${exec[@]}" ; "${exec[@]}" + core__ui_cmd "${exec[@]}" ; "${exec[@]}" + exit_code=$? + core__log_cmd $exit_code "${exec[*]}" done } -function GLD_vscode_extensions_install () { +function core__vscode_extensions_install () { ARRAY=$* for i in $ARRAY; do if ! command -v "$i" &> /dev/null; then exec=(code --install-extension "$i") fi - ui_cmd "${exec[@]}" ; "${exec[@]}" + core__ui_cmd "${exec[@]}" ; "${exec[@]}" + exit_code=$? + core__log_cmd $exit_code "${exec[*]}" done } diff --git a/exec/apt/install.sh b/exec/apt/install.sh index 3a327c6..468768c 100755 --- a/exec/apt/install.sh +++ b/exec/apt/install.sh @@ -5,8 +5,8 @@ source "$PWD"/config/ui.sh source "$PWD"/config/config.sh source "$PWD"/config/utils.sh -ui_start +core__ui_start -GLD_apt_packages_install "${GLD_apt_packages[@]}" +core__install__apt_packages "${core__apt_packages[@]}" -ui_done \ No newline at end of file +core__ui_done \ No newline at end of file diff --git a/exec/apt/update.sh b/exec/apt/update.sh index 1838426..8a488be 100755 --- a/exec/apt/update.sh +++ b/exec/apt/update.sh @@ -8,9 +8,14 @@ source "$PWD"/config/utils.sh exec_a=(sudo apt update -y) exec_b=(sudo apt upgrade -y) -ui_start +core__ui_start -ui_cmd "${exec_a[@]}" ; "${exec_a[@]}" -ui_cmd "${exec_b[@]}" ; "${exec_b[@]}" +core__ui_cmd "${exec_a[@]}"; "${exec_a[@]}" +exit_code=$? +core__log_cmd $exit_code "${exec_a[*]}" -ui_done \ No newline at end of file +core__ui_cmd "${exec_b[@]}"; "${exec_b[@]}" +exit_code=$? +core__log_cmd $exit_code "${exec_b[*]}" + +core__ui_done \ No newline at end of file diff --git a/exec/brew/binary.sh b/exec/brew/binary.sh index fbc83a5..c55a96e 100644 --- a/exec/brew/binary.sh +++ b/exec/brew/binary.sh @@ -17,11 +17,18 @@ ui_start if ! command -v brew &> /dev/null; then ui_info "installing brew executable" ui_cmd "${exec_install[@]}" ; NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + exit_code=$? + log_cmd $exit_code "${exec_install[*]}" + if [ -f "$HOME"/.zshrc ]; then - ui_info "$HOME/.zshrc detected" + ui_info "$HOME/.zshrc detected" if ! grep -q "${exec_env[@]}" < "$HOME"/.zshrc ; then ui_info "dotfile sourcing not found" - ui_cmd "${exec_env[*]} >> $HOME/.zshrc" ; printf "\n\n%s\n$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" >> "$HOME"/.zshrc + ui_cmd "${exec_env[*]} >> $HOME/.zshrc" + printf "\n\n%s\n$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" >> "$HOME"/.zshrc + exit_code=$? + log_cmd $exit_code "${exec_env[*]}" + else ui_info "sourcing already found, terminating" fi @@ -36,7 +43,15 @@ ui_info "setting env vars" eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) ui_cmd "${exec_a[@]}" ; "${exec_a[@]}" +exit_code=$? +log_cmd $exit_code "${exec_a[*]}" + ui_cmd "${exec_b[@]}" ; "${exec_b[@]}" +exit_code=$? +log_cmd $exit_code "${exec_b[*]}" + ui_cmd "${exec_c[@]}" ; "${exec_c[@]}" +exit_code=$? +log_cmd $exit_code "${exec_c[*]}" ui_done diff --git a/exec/dotfiles/dotfiles.sh b/exec/dotfiles/dotfiles.sh index 17e94e1..d12b3e0 100644 --- a/exec/dotfiles/dotfiles.sh +++ b/exec/dotfiles/dotfiles.sh @@ -5,18 +5,23 @@ source "$PWD"/config/ui.sh source "$PWD"/config/config.sh source "$PWD"/config/utils.sh -ui_start +core__ui_start -for i in "${GLD_dotfiles[@]}" +for i in "${core__dotfiles[@]}" do file="$HOME/.$i" exec_a=(mv "$HOME"/."$i" "$HOME"/."$i".old) exec_b=(cp "$PWD"/config/files/"$i".sh "$HOME"/."$i") if [ -f "$file" ]; then - ui_info "$file already exists, creating old version" - ui_cmd "${exec_a[@]}" ; "${exec_a[@]}" + core__ui_info "$file already exists, creating old version" + + core__ui_cmd "${exec_a[@]}"; "${exec_a[@]}" + exit_code=$? + core__log_cmd $exit_code "${exec_a[*]}" fi - ui_cmd "${exec_b[@]}" ; "${exec_b[@]}" + core__ui_cmd "${exec_b[@]}"; "${exec_b[@]}" + exit_code=$? + core__log_cmd $exit_code "${exec_b[*]}" done -ui_done \ No newline at end of file +core__ui_done \ No newline at end of file diff --git a/exec/dotfiles/rcfiles.sh b/exec/dotfiles/rcfiles.sh index b528473..ee076c1 100644 --- a/exec/dotfiles/rcfiles.sh +++ b/exec/dotfiles/rcfiles.sh @@ -5,22 +5,25 @@ source "$PWD"/config/ui.sh source "$PWD"/config/config.sh source "$PWD"/config/utils.sh -ui_start +core__ui_start -sourcing="source $HOME/.aliases; source $HOME/.functions" +exec="printf source $HOME/.aliases; source $HOME/.functions >> $HOME/.zshrc " if [ -f "$HOME"/.zshrc ]; then - ui_info "$HOME/.zshrc detected" - if ! grep -q "$sourcing" < "$HOME"/.zshrc ; then - ui_info "dotfile sourcing not found" - ui_cmd "$sourcing >> $HOME/.zshrc" - printf "\n%s\n" "$sourcing" >> "$HOME"/.zshrc + core__ui_info "$HOME/.zshrc detected" + if ! grep -q "$exec" < "$HOME"/.zshrc ; then + core__ui_info "dotfile sourcing not found" + core__ui_cmd "printf \"$exec\" >> $HOME/.zshrc" ; printf "\n%s\n" "$exec" >> "$HOME"/.zshrc + + exit_code=$? + core__log_cmd $exit_code "printf \"$exec\" >> $HOME/.zshrc" + # printf "\n%s\n" "$exec" >> "$HOME"/.zshrc else - ui_info "sourcing already found, terminating" + core__ui_info "sourcing already found, terminating" fi else - ui_error "$HOME/.zshrc not found" + core__ui_error "$HOME/.zshrc not found" fi -ui_done +core__ui_done diff --git a/exec/snap/install.sh b/exec/snap/install.sh index 83e4010..fe2208e 100644 --- a/exec/snap/install.sh +++ b/exec/snap/install.sh @@ -5,9 +5,8 @@ source "$PWD"/config/ui.sh source "$PWD"/config/config.sh source "$PWD"/config/utils.sh -ui_start +core__ui_start +core__snap_packages_install -GLD_snap_packages_install - -ui_done +core__ui_done diff --git a/exec/snap/refresh.sh b/exec/snap/refresh.sh index b9bb2cb..f52700a 100644 --- a/exec/snap/refresh.sh +++ b/exec/snap/refresh.sh @@ -5,10 +5,17 @@ source "$PWD"/config/ui.sh source "$PWD"/config/config.sh source "$PWD"/config/utils.sh -exec=(sudo snap refresh) +exec_a=(killall snap-store) +exec_b=(sudo snap refresh) -ui_start +core__ui_start -ui_cmd "${exec[@]}" ; "${exec[@]}" +core__ui_cmd "${exec_a[@]}"; "${exec_a[@]}" +exit_code=$? +core__log_cmd $exit_code "${exec_a[*]}" -ui_done +core__ui_cmd "${exec_b[@]}"; "${exec_b[@]}" +exit_code=$? +core__log_cmd $exit_code "${exec_b[*]}" + +core__ui_done \ No newline at end of file diff --git a/exec/vscode/extensions.sh b/exec/vscode/extensions.sh index da8a541..3ea2ee7 100644 --- a/exec/vscode/extensions.sh +++ b/exec/vscode/extensions.sh @@ -5,8 +5,8 @@ source "$PWD"/config/ui.sh source "$PWD"/config/config.sh source "$PWD"/config/utils.sh -ui_start +core__ui_start -GLD_vscode_extensions_install "${GLD_vscode_extensions[@]}" +core__vscode_extensions_install "${core__vscode_extensions[@]}" -ui_done \ No newline at end of file +core__ui_done \ No newline at end of file diff --git a/exec/vscode/settings.sh b/exec/vscode/settings.sh index a029fa2..a82a983 100644 --- a/exec/vscode/settings.sh +++ b/exec/vscode/settings.sh @@ -5,11 +5,12 @@ source "$PWD"/config/ui.sh source "$PWD"/config/config.sh source "$PWD"/config/utils.sh -exec_a=(cp "$PWD"/config/files/vscode-settings.json "$HOME"/.config/Code/User/settings.json) +exec=(cp "$PWD"/config/files/vscode-settings.json "$HOME"/.config/Code/User/settings.json) -ui_start +core__ui_start -ui_cmd "${exec_a[@]}" ; "${exec_a[@]}" -ui_cmd "${exec_b[@]}" ; "${exec_b[@]}" -ui_done +core__ui_cmd "${exec[@]}"; "${exec[@]}" +exit_code=$? +core__log_cmd $exit_code "${exec[*]}" +core__ui_done \ No newline at end of file diff --git a/exec/zsh/framework.sh b/exec/zsh/framework.sh index b085004..5a6085e 100644 --- a/exec/zsh/framework.sh +++ b/exec/zsh/framework.sh @@ -7,12 +7,12 @@ source "$PWD"/config/utils.sh exec=(sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended) -ui_start +core__ui_start if [ ! -d "$HOME"/.oh-my-zsh/ ]; then - ui_cmd "${exec[@]}" ; "${exec[@]}" + core__ui_cmd "${exec[@]}" ; "${exec[@]}" else - ui_info "$HOME/.oh-my-zsh/ folder exists; skipping.." + core__ui_info "$HOME/.oh-my-zsh/ folder exists; skipping.." fi -ui_done \ No newline at end of file +core__ui_done \ No newline at end of file diff --git a/exec/zsh/plugins.sh b/exec/zsh/plugins.sh index ab181b3..ac3435e 100644 --- a/exec/zsh/plugins.sh +++ b/exec/zsh/plugins.sh @@ -5,26 +5,26 @@ source "$PWD"/config/ui.sh source "$PWD"/config/config.sh source "$PWD"/config/utils.sh -ui_start +core__ui_start sed -i.old "s/^plugins=(git).*/plugins=(\n git\n)$i/g" "$HOME"/.zshrc -for i in "${GLD_omz_plugins[@]}" +for i in "${core__omz_plugins[@]}" do if [ ! -d "$HOME"/.oh-my-zsh/custom/plugins/"$i" ]; then exec_a=(git clone https://github.com/zsh-users/"$i".git "$HOME"/.oh-my-zsh/custom/plugins/"$i") exec_b=(sed -i.old "s/^plugins=(.*/plugins=(\n $i/g" "$HOME"/.zshrc) - ui_info "$i folder does not exist" + core__ui_info "$i folder does not exist" - ui_info "installing $i plugin" - ui_cmd "${exec_a[@]}" ; "${exec_a[@]}" + core__ui_info "installing $i plugin" + core__ui_cmd "${exec_a[@]}" ; "${exec_a[@]}" - ui_info "write new plugin in $HOME/.zshrc" - ui_cmd "${exec_b[@]}" ; "${exec_b[@]}" + core__ui_info "write new plugin in $HOME/.zshrc" + core__ui_cmd "${exec_b[@]}" ; "${exec_b[@]}" else - ui_info "$i folder exists; skipping plugin" + core__ui_info "$i folder exists; skipping plugin" fi done -ui_done \ No newline at end of file +core__ui_done \ No newline at end of file diff --git a/exec/zsh/prompt.sh b/exec/zsh/prompt.sh index 09b49c3..ca44f61 100644 --- a/exec/zsh/prompt.sh +++ b/exec/zsh/prompt.sh @@ -9,20 +9,20 @@ exec_a=(git clone https://github.com/spaceship-prompt/spaceship-prompt.git "$HOM exec_b=(ln -s "$HOME/.oh-my-zsh/custom/themes/spaceship-prompt/spaceship.zsh-theme" "$HOME/.oh-my-zsh/themes/spaceship.zsh-theme") exec_c=(sed -i.old "s/^ZSH_THEME=\".*/ZSH_THEME=\"spaceship\"/g" "$HOME"/.zshrc) -ui_start +core__ui_start if [ ! -d "$HOME"/.oh-my-zsh/oh-my-zsh/custom/themes/spaceship-prompt ]; then - ui_info "installing 'spaceship-prompt' theme" - ui_cmd "${exec_a[@]}" ; "${exec_a[@]}" + core__ui_info "installing 'spaceship-prompt' theme" + core__ui_cmd "${exec_a[@]}" ; "${exec_a[@]}" - ui_info "create symlink" - ui_cmd "${exec_b[@]}" ; "${exec_b[@]}" + core__ui_info "create symlink" + core__ui_cmd "${exec_b[@]}" ; "${exec_b[@]}" - ui_info "update .zshrc with current prompt" - ui_cmd "${exec_c[@]}" ; "${exec_c[@]}" + core__ui_info "update .zshrc with current prompt" + core__ui_cmd "${exec_c[@]}" ; "${exec_c[@]}" else - ui_info "folder exists; skipping.." + core__ui_info "folder exists; skipping.." fi -ui_done \ No newline at end of file +core__ui_done \ No newline at end of file