feat: manage versions with asdf
This commit is contained in:
		| @@ -1,6 +1,6 @@ | |||||||
| FROM debian:latest | FROM debian:latest | ||||||
|  |  | ||||||
| ADD . ~/.dotfiles | ADD . /root/.dotfiles | ||||||
|  |  | ||||||
| RUN apt-get update && apt-get upgrade -y | RUN apt-get update && apt-get upgrade -y | ||||||
| RUN apt-get install curl git zsh -y | RUN apt-get install curl git zsh -y | ||||||
|   | |||||||
| @@ -76,9 +76,10 @@ source $HOME/.dotfiles/configs/zsh/update-repo.zsh | |||||||
| # The next line enables shell command completion for gcloud. | # The next line enables shell command completion for gcloud. | ||||||
| #if [ -f '/home/coder/downloads/google-cloud-sdk/completion.zsh.inc' ]; then . '/home/coder/downloads/google-cloud-sdk/completion.zsh.inc'; fi | #if [ -f '/home/coder/downloads/google-cloud-sdk/completion.zsh.inc' ]; then . '/home/coder/downloads/google-cloud-sdk/completion.zsh.inc'; fi | ||||||
|  |  | ||||||
| . $HOME/.asdf/asdf.sh | if [ -s "$HOME/.asdf" ]; then | ||||||
| . $HOME/.asdf/completions/asdf.bash |     . $HOME/.asdf/asdf.sh | ||||||
|  |     . $HOME/.asdf/completions/asdf.bash | ||||||
|  | fi | ||||||
|  |  | ||||||
| # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. | # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. | ||||||
| [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh | [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ alias yoink="curl" | |||||||
|  |  | ||||||
| alias pls='sudo -E env "PATH=$PATH"' | alias pls='sudo -E env "PATH=$PATH"' | ||||||
|  |  | ||||||
| alias zshc="cd ~/.dotfiles && vim configs/.zshrc" | alias zshc="cd ~/.dotfiles && vim configs/.zshrc && cd -" | ||||||
| alias zshu="source ~/.zshrc" | alias zshu="source ~/.zshrc" | ||||||
|  |  | ||||||
| alias nano="nvim" | alias nano="nvim" | ||||||
|   | |||||||
| @@ -2,28 +2,33 @@ | |||||||
|  |  | ||||||
| function fp(){ | function fp(){ | ||||||
|  |  | ||||||
|     PORT=$1; |     for p in "$@" | ||||||
|  |     do | ||||||
|  |  | ||||||
|     if [ "$(which lsof)" = "lsof not found" ]; then |         PORT=$var; | ||||||
|         echo "lsof not installed" |  | ||||||
|     else |  | ||||||
|         PIDS="$(lsof -t -i:$PORT)" |  | ||||||
|  |  | ||||||
|         AMOUNT=$(wc -w<<<$PIDS); |  | ||||||
|  |  | ||||||
|         if [ $AMOUNT = 0 ]; then |  | ||||||
|  |  | ||||||
|             echo "No processes use port $PORT"; |  | ||||||
|  |  | ||||||
|  |         if [ "$(which lsof)" = "lsof not found" ]; then | ||||||
|  |             echo "lsof not installed" | ||||||
|         else |         else | ||||||
|  |             PIDS="$(lsof -t -i:$PORT)" | ||||||
|  |  | ||||||
|             echo "Killing $AMOUNT process(es) using port $PORT"; |             AMOUNT=$(wc -w<<<$PIDS); | ||||||
|  |  | ||||||
|             echo "$PIDS" | while IFS= read -r pid ; do  |             if [ $AMOUNT = 0 ]; then | ||||||
|                 kill -9 $pid; |  | ||||||
|             done |  | ||||||
|  |  | ||||||
|  |                 echo "No processes use port $PORT"; | ||||||
|  |  | ||||||
|  |             else | ||||||
|  |  | ||||||
|  |                 echo "Killing $AMOUNT process(es) using port $PORT"; | ||||||
|  |  | ||||||
|  |                 echo "$PIDS" | while IFS= read -r pid ; do  | ||||||
|  |                     kill -9 $pid; | ||||||
|  |                 done | ||||||
|  |  | ||||||
|  |             fi | ||||||
|         fi |         fi | ||||||
|     fi |  | ||||||
|  |  | ||||||
| } |     done | ||||||
|  |  | ||||||
|  | } | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								helpers/asdf-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								helpers/asdf-install.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | asdfInstall(){ | ||||||
|  |     . "$HOME/.asdf/asdf.sh" | ||||||
|  |     if [ "$(which asdf)" = "" ]; then | ||||||
|  |         echo "Asdf not installed" | ||||||
|  |     else | ||||||
|  |         echo "-------------- ASDF install ------------------" | ||||||
|  |         echo "-- $1" | ||||||
|  |         asdf plugin add $1 | ||||||
|  |         asdf install $1 latest | ||||||
|  |         asdf global $1 latest | ||||||
|  |         echo "----------------------------------------------" | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | [[ "${1}" != "--source-only" ]] && asdfInstall "${@}" | ||||||
| @@ -24,11 +24,11 @@ installOptional() { | |||||||
| install() { | install() { | ||||||
|   # Check if program is already installed |   # Check if program is already installed | ||||||
|   if isInstalled $1; then |   if isInstalled $1; then | ||||||
|     echo " - $1 is already installed" |     echo " ✓ $1 is already installed" | ||||||
|   else |   else | ||||||
|     echo " - installing $1 ..." |     echo " - installing $1 ..." | ||||||
|     apt-get install $1 -y >/dev/null |     apt-get install $1 -y >/dev/null | ||||||
|     echo " - finished" |     echo " ✓ finished" | ||||||
|   fi |   fi | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -68,9 +68,9 @@ function multiselect() { | |||||||
|     # print options by overwriting the last lines |     # print options by overwriting the last lines | ||||||
|     local idx=0 |     local idx=0 | ||||||
|     for option in "${options[@]}"; do |     for option in "${options[@]}"; do | ||||||
|       local prefix="   [ ]" |       local prefix=" [ ]" | ||||||
|       if [[ ${selected[idx]} == true ]]; then |       if [[ ${selected[idx]} == true ]]; then | ||||||
|         prefix="   [x]" |         prefix=" [x]" | ||||||
|       fi |       fi | ||||||
|  |  | ||||||
|       cursor_to $(($startrow + $idx)) |       cursor_to $(($startrow + $idx)) | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| #!/bin/bash | #!/bin/bash | ||||||
|  |  | ||||||
| # - Prerequesits - | # - Prerequesits - | ||||||
| echo "-- Installing git --" |  | ||||||
| if [ "$(which git)" = "" ]; then | if [ "$(which git)" = "" ]; then | ||||||
|  |     echo "-- Installing git --" | ||||||
|     apt-get install git -y >/dev/null |     apt-get install git -y >/dev/null | ||||||
| fi | fi | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								install/install-asdf.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								install/install-asdf.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | if [ -d ~/.asdf ] ; then | ||||||
|  |  | ||||||
|  |     echo " ✓ asdf already installed" | ||||||
|  |  | ||||||
|  | else | ||||||
|  |      | ||||||
|  |     git clone --quiet https://github.com/asdf-vm/asdf.git ~/.asdf > /dev/null | ||||||
|  |     cd ~/.asdf | ||||||
|  |     git checkout --quiet "$(git describe --abbrev=0 --tags)" > /dev/null | ||||||
|  |     . asdf.sh | ||||||
|  |  | ||||||
|  | fi | ||||||
| @@ -1,46 +0,0 @@ | |||||||
| #!/bin/bash -e |  | ||||||
| cd "$(dirname "$0")" |  | ||||||
|  |  | ||||||
| # Make config directory for Neovim's init.vim |  | ||||||
| echo '[*] Preparing Neovim config directory ...' |  | ||||||
| mkdir -p ~/.config/nvim |  | ||||||
|  |  | ||||||
| # Install nvim (and its dependencies: pip3, git), Python 3 and ctags (for tagbar) |  | ||||||
| echo '[*] App installing Neovim and its dependencies (Python 3 and git), and dependencies for tagbar (exuberant-ctags) ...' |  | ||||||
| sudo apt update |  | ||||||
| sudo apt install neovim python3 python3-pip python3-venv git curl exuberant-ctags -y |  | ||||||
|  |  | ||||||
| # Install virtualenv to containerize dependencies |  | ||||||
| echo '[*] Pip installing venv to containerize Neovim dependencies (instead of installing them onto your system) ...' |  | ||||||
| python3 -m venv ~/.config/nvim/env |  | ||||||
|  |  | ||||||
| # Install pip modules for Neovim within the virtual environment created |  | ||||||
| echo '[*] Activating virtualenv and pip installing Neovim (for Python plugin support), libraries for async autocompletion support (jedi, psutil, setproctitle), and library for pep8-style formatting (yapf) ...' |  | ||||||
| source ~/.config/nvim/env/bin/activate |  | ||||||
| pip install pynvim jedi psutil setproctitle yapf doq # run `pip uninstall neovim pynvim` if still using old neovim module |  | ||||||
| deactivate |  | ||||||
|  |  | ||||||
| # Install vim-plug plugin manager |  | ||||||
| echo '[*] Downloading vim-plug, the best minimalistic vim plugin manager ...' |  | ||||||
| curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |  | ||||||
|  |  | ||||||
| # (Optional but recommended) Install a nerd font for icons and a beautiful airline bar (https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts) (I'll be using Iosevka for Powerline) |  | ||||||
| echo "[*] Downloading patch font into ~/.local/share/fonts ..." |  | ||||||
| curl -fLo ~/.fonts/Iosevka\ Term\ Nerd\ Font\ Complete.ttf --create-dirs https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Iosevka/Regular/complete/Iosevka%20Term%20Nerd%20Font%20Complete.ttf |  | ||||||
|  |  | ||||||
| # (Optional) Alias vim -> nvim |  | ||||||
| echo '[*] Aliasing vim -> nvim, remember to source ~/.bashrc ...' |  | ||||||
| echo "alias vim='nvim'" >>~/.bashrc |  | ||||||
|  |  | ||||||
| # Enter Neovim and install plugins using a temporary init.vim, which avoids warnings about missing colorschemes, functions, etc |  | ||||||
| echo -e '[*] Running :PlugInstall within nvim ...' |  | ||||||
| sed '/call plug#end/q' ../configs/init.vim >~/.config/nvim/init.vim |  | ||||||
| nvim -c ':PlugInstall' -c ':UpdateRemotePlugins' -c ':qall' |  | ||||||
| rm ~/.config/nvim/init.vim |  | ||||||
|  |  | ||||||
| # Copy init.vim in current working directory to nvim's config location ... |  | ||||||
| echo '[*] Linking init.vim -> ~/.config/nvim/init.vim' |  | ||||||
| cd .. |  | ||||||
| ln -s $(pwd)/configs/init.vim ~/.config/nvim/init.vim |  | ||||||
|  |  | ||||||
| echo -e "[+] Done, welcome to \033[1m\033[92mNeoVim\033[0m! Try it by running: nvim/vim. Want to customize it? Modify ~/.config/nvim/init.vim" |  | ||||||
							
								
								
									
										15
									
								
								install/install-nvim.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								install/install-nvim.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | if [ -f "$HOME/.config/nvim/init.vim" ]; then | ||||||
|  |   echo " - moving old file to init.vim.BAK" | ||||||
|  |   mv "$HOME/.config/nvim/init.vim" "$HOME/.config/nvim/init.vim.BAK" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | echo " - linking init.vim --> init.vim" | ||||||
|  | mkdir -p $HOME/.config/nvim | ||||||
|  | ln -s "$HOME/.dotfiles/configs/init.vim" "$HOME/.config/nvim/init.vim" | ||||||
|  |  | ||||||
|  | echo " - installing vim-plug" | ||||||
|  | sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ | ||||||
|  |        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' | ||||||
|  |  | ||||||
|  | echo " - installing vim plugins" | ||||||
|  | nvim --headless +PlugInstall +q | ||||||
							
								
								
									
										0
									
								
								install/oh-my-zsh.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								install/oh-my-zsh.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										4
									
								
								install/p10k.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										4
									
								
								install/p10k.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -1,3 +1,3 @@ | |||||||
| echo " - cloning github.com/zsh-users/zsh-autosuggestions into ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" | echo " - cloning github.com/romkatv/powerlevel10k into ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" | ||||||
| git clone --quiet --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k > /dev/null | git clone --quiet --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k > /dev/null | ||||||
| echo " - finished" | echo " - finished" | ||||||
|   | |||||||
							
								
								
									
										0
									
								
								install/zsh-autosuggestions.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								install/zsh-autosuggestions.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										66
									
								
								setup.sh
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								setup.sh
									
									
									
									
									
								
							| @@ -1,10 +1,12 @@ | |||||||
| #!/bin/bash | #!/bin/bash | ||||||
| cd "$(dirname "$0")" | cd "$(dirname "$0")" | ||||||
|  |  | ||||||
|  | #Loading all the helper scripts | ||||||
| . ./helpers/installer.sh --source-only | . ./helpers/installer.sh --source-only | ||||||
| . ./helpers/prompt.sh --source-only | . ./helpers/prompt.sh --source-only | ||||||
| . ./helpers/linker.sh --source-only | . ./helpers/linker.sh --source-only | ||||||
| . ./helpers/multiselect.sh --source-only | . ./helpers/multiselect.sh --source-only | ||||||
|  | . ./helpers/asdf-install.sh --source-only | ||||||
|  |  | ||||||
| echo "-- welcome to my setup script --" | echo "-- welcome to my setup script --" | ||||||
| echo "-- installing prerequesits (git, curl) --" | echo "-- installing prerequesits (git, curl) --" | ||||||
| @@ -31,35 +33,66 @@ echo "-----------------------------------" | |||||||
| #Make the selection | #Make the selection | ||||||
| echo "-- what do you want to install? --" | echo "-- what do you want to install? --" | ||||||
|  |  | ||||||
| OPTIONS_VALUES=("ZSH" "NVIM" "DRNV" "GVM" "NVM" "SDKM") |  | ||||||
| OPTIONS_LABELS=("zsh + oh-my-zsh" "Neovim" "Direnv" "Go Version Manager" "Node Version Manager" "Java Version Manager") | # 0 - ZSH | ||||||
|  | # 1 - NVIM | ||||||
|  | # 2 - DRNV | ||||||
|  | # 3 - NODE | ||||||
|  | # 4 - GO | ||||||
|  | # 5 - ZSH | ||||||
|  | # 6 - ZSH | ||||||
|  | # 7 - ZSH | ||||||
|  |  | ||||||
|  | OPTIONS_VALUES=("ZSH"             "NVIM"   "ASDF" "DRNV"   "NODE"   "GO"     "PYTH"   "DENO" "HUGO" "RUST") | ||||||
|  | OPTIONS_LABELS=("zsh + oh-my-zsh" "Neovim" "Asdf" "Direnv" "NodeJS" "Golang" "Python" "Deno" "Hugo" "Rust") | ||||||
| for i in "${!OPTIONS_VALUES[@]}"; do | for i in "${!OPTIONS_VALUES[@]}"; do | ||||||
|   OPTIONS_STRING+="${OPTIONS_VALUES[$i]} (${OPTIONS_LABELS[$i]});" |   OPTIONS_STRING+="${OPTIONS_VALUES[$i]} (${OPTIONS_LABELS[$i]});" | ||||||
| done | done | ||||||
|  |  | ||||||
| if [ $INTERACTIVE = "true" ]; then | if [ $INTERACTIVE = "true" ]; then | ||||||
|   multiselect SELECTED "$OPTIONS_STRING" |   multiselect SELECTED "$OPTIONS_STRING": | ||||||
| fi | fi | ||||||
|  |  | ||||||
| # Variables | # Variables | ||||||
| INST_ZSH=${SELECTED[0]} | INST_ZSH=${SELECTED[0]} | ||||||
| INST_NVIM=${SELECTED[1]} | INST_NVIM=${SELECTED[1]} | ||||||
| INST_DRNV=${SELECTED[2]} | INST_ASDF=${SELECTED[2]} | ||||||
| INST_GVM=${SELECTED[3]} | INST_DRNV=${SELECTED[3]} | ||||||
| INST_NVM=${SELECTED[4]} | INST_NODE=${SELECTED[4]} | ||||||
| INST_SDKM=${SELECTED[5]} | INST_GO=${SELECTED[5]} | ||||||
|  | INST_PYTH=${SELECTED[6]} | ||||||
|  | INST_DENO=${SELECTED[7]} | ||||||
|  | INST_HUGO=${SELECTED[8]} | ||||||
|  | INST_RUST=${SELECTED[9]} | ||||||
|  |  | ||||||
| if [ $INTERACTIVE = "false" ]; then | if [ $INTERACTIVE = "false" ]; then | ||||||
|   INST_ZSH=true |   INST_ZSH=true | ||||||
|  |   INST_NVIM=true | ||||||
| fi | fi | ||||||
|  |  | ||||||
| echo "-----------------------------------" | echo "-----------------------------------" | ||||||
|  |  | ||||||
| echo -e "-- installing programs --" | echo -e "-- installing programs --" | ||||||
| [[ "$INST_DRNV" = true ]] && install direnv | [[ "$INST_DRNV" = true ]] && install direnv | ||||||
| [[ "$INST_GVM" = true ]] && echo " - installing GVM" | if [ "$INST_ASDF" = true ]; then | ||||||
| [[ "$INST_NVM" = true ]] && echo " - installing NVM" |  | ||||||
| [[ "$INST_SDKM" = true ]] && echo " - installing SDKM" |     # Requirements for ASDF | ||||||
|  |     install gnupg2 | ||||||
|  |     install unzip | ||||||
|  |     ./install/install-asdf.sh | ||||||
|  |  | ||||||
|  |     if [ "$INST_NVIM" = true ]; then | ||||||
|  |       asdfInstall neovim | ||||||
|  |       ./install/install-nvim.sh | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     [[ "$INST_NODE" = true ]] && asdfInstall nodejs | ||||||
|  |     [[ "$INST_GO" = true ]] && asdfInstall golang | ||||||
|  |     [[ "$INST_PYTH" = true ]] && asdfInstall python | ||||||
|  |     [[ "$INST_DENO" = true ]] && asdfInstall deno | ||||||
|  |     [[ "$INST_HUGO" = true ]] && asdfInstall hugo | ||||||
|  |     [[ "$INST_RUST" = true ]] && asdfInstall rust | ||||||
|  | fi | ||||||
|  |  | ||||||
| echo "-- linking .dotfiles --" | echo "-- linking .dotfiles --" | ||||||
|  |  | ||||||
| @@ -81,15 +114,6 @@ if [ "$INST_ZSH" = true ]; then | |||||||
|   echo "-----------------------------------" |   echo "-----------------------------------" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if [ "$INST_NVIM" = true ]; then |  | ||||||
|   install neovim |  | ||||||
|  |  | ||||||
|   echo "-- Configuring Optixal's Neovim (https://github.com/Optixal/neovim-init.vim) --" |  | ||||||
|  |  | ||||||
|   sh $(pwd)/install/install-config.sh |  | ||||||
|   echo "-----------------------------------" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ "$INST_ZSH" = true ]; then | if [ "$INST_ZSH" = true ]; then | ||||||
|  |  | ||||||
|   # Change default shell |   # Change default shell | ||||||
| @@ -106,4 +130,6 @@ cd ~ | |||||||
|  |  | ||||||
| echo "-- ALL DONE --" | echo "-- ALL DONE --" | ||||||
|  |  | ||||||
| zsh | if [ "$INST_ZSH" = true ]; then | ||||||
|  |     zsh | ||||||
|  | fi | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user