188 lines
5.7 KiB
Bash
Executable File
188 lines
5.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# shellcheck disable=2045,2086
|
|
|
|
ZSHFOLDER=$HOME/.config/zsh
|
|
CONFIG="$HOME/.config"
|
|
|
|
# Colours
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;0;32m'
|
|
NC='\033[0m'
|
|
|
|
function timestamp() {
|
|
echo -e "${GREEN}[+]${NC} $(date +'%F %T') [INFO] $*"
|
|
}
|
|
|
|
function err() {
|
|
echo -e "${RED}[-] $(date +'%F %T') [ERROR] $*${NC}" >&2
|
|
}
|
|
|
|
function command_start() {
|
|
timestamp "Command $* has been started."
|
|
if ! "$*"; then
|
|
err "Command $* went wrong."
|
|
exit
|
|
fi
|
|
timestamp "Command $* has been ended."
|
|
}
|
|
|
|
function update_pip() {
|
|
# Update the pip
|
|
python3 -m pip install --upgrade pip --user
|
|
}
|
|
|
|
function install_neovim_module_for_python() {
|
|
# Python module in neovim
|
|
pip3 install neovim --pre --user --force --quiet
|
|
}
|
|
|
|
function install_pyright() {
|
|
# Install pyright
|
|
sudo npm -s -g i pyright --force
|
|
}
|
|
|
|
function install_bash-language-server() {
|
|
# Install bash-language-server
|
|
sudo npm -s -g i bash-language-server --force
|
|
}
|
|
|
|
function install_yaml-language-server() {
|
|
# Install yaml-language-server
|
|
sudo npm -s -g i yaml-language-server --force
|
|
}
|
|
|
|
function install_shfmt() {
|
|
# Install shfmt
|
|
GO111MODULE=on go install mvdan.cc/sh/v3/cmd/shfmt@latest
|
|
}
|
|
|
|
function install_terraform() {
|
|
# Install terraform and terraform-ls
|
|
GO111MODULE=on go install github.com/hashicorp/terraform@latest
|
|
GO111MODULE=on go install github.com/hashicorp/terraform-ls@latest
|
|
if [[ "$(uname)" == "Darwin" ]]; then
|
|
brew install tflint -q
|
|
else
|
|
curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
|
|
fi
|
|
}
|
|
|
|
function install_terragrunt() {
|
|
# Install terragrunt
|
|
if [[ "$(uname)" == "Darwin" ]]; then
|
|
brew install terragrunt -q
|
|
else
|
|
wget https://github.com/gruntwork-io/terragrunt/releases/latest/download/terragrunt_linux_amd64 -O $HOME/.local/bin/terragrunt
|
|
chmod +x $HOME/.local/bin/terragrunt
|
|
fi
|
|
}
|
|
|
|
function install_shellcheck() {
|
|
# Install shellcheck
|
|
if [[ "$(uname)" == "Darwin" ]]; then
|
|
brew install shellcheck -q
|
|
else
|
|
curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
|
|
fi
|
|
}
|
|
|
|
function install_gopls() {
|
|
# Install gopls
|
|
GO111MODULE=on go install golang.org/x/tools/gopls@latest
|
|
}
|
|
|
|
function install_black() {
|
|
# Install black
|
|
pip3 install black --pre --user --force --quiet
|
|
}
|
|
|
|
function install_ansible() {
|
|
# Install Ansible
|
|
pip3 install ansible ansible-lint ansible-core --pre --user --force --quiet
|
|
}
|
|
|
|
function install_ansible-language-server() {
|
|
# Install ansible-language-server
|
|
sudo npm -s -g i @ansible/ansible-language-server --force
|
|
sudo npm -s -g i yaml-language-server --force
|
|
}
|
|
|
|
function install_meraki_ansible() {
|
|
# Install python, ansible module for meraki
|
|
ansible-galaxy collection install cisco.meraki --force
|
|
pip3 install meraki --user --force --quiet
|
|
}
|
|
|
|
function install_azure_cli() {
|
|
# Install azure_cli
|
|
pip3 install azure-cli --pre --user --force --quiet
|
|
}
|
|
|
|
function install_awscli() {
|
|
# Install awscli
|
|
pip3 install awscli --pre --user --force --quiet
|
|
}
|
|
|
|
function update() {
|
|
if [ -d $CONFIG/fzf ]; then
|
|
FOLDER="$CONFIG/fzf"
|
|
cd $FOLDER || err "Folder $FOLDER has been NOT found"
|
|
git pull -q && timestamp "Pulling the $FOLDER configuration"
|
|
else
|
|
FOLDER="$CONFIG/fzf"
|
|
git clone https://github.com/junegunn/fzf.git $FOLDER && timestamp "Cloning the FZF"
|
|
git pull -q && timestamp "Pulling the $FOLDER configuration"
|
|
fi
|
|
|
|
if [ ! -d $ZSHFOLDER/aws ]; then
|
|
curl -s https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/aws/aws.plugin.zsh \
|
|
-o "$ZSHFOLDER"/aws/aws.plugin.zsh &&
|
|
timestamp "Downloaded the newest version of aws plugin for zsh"
|
|
|
|
curl -s https://raw.githubusercontent.com/Azure/azure-cli/dev/az.completion \
|
|
-o "$ZSHFOLDER"/azure-cli/az.completion &&
|
|
timestamp "Downloaded the newest version of az plugin for zsh"
|
|
|
|
mkdir -p "$ZSHFOLDER/azure-cli" "$ZSHFOLDER/aws"
|
|
cd $ZSHFOLDER || err "Folder $ZSHFOLDER has been NOT found"
|
|
git clone https://github.com/popstas/zsh-command-time.git &&
|
|
timestamp "Cloning the zsh-command-time"
|
|
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git &&
|
|
timestamp "Cloning the zsh-syntax-highlighting"
|
|
git clone https://github.com/zsh-users/zsh-autosuggestions.git &&
|
|
timestamp "Cloning the zsh-autosuggestions"
|
|
fi
|
|
|
|
for i in $(ls $ZSHFOLDER); do
|
|
FOLDER="$ZSHFOLDER/$i"
|
|
if [ -d "$FOLDER/.git" ]; then
|
|
cd "$FOLDER" || err "Folder $FOLDER has been NOT found"
|
|
git pull -q && timestamp "Pulling the $FOLDER configuration"
|
|
fi
|
|
done
|
|
|
|
curl -s https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/aws/aws.plugin.zsh -o "$ZSHFOLDER"/aws/aws.plugin.zsh && timestamp "Downloaded the newest version of aws plugin for zsh"
|
|
curl -s https://raw.githubusercontent.com/Azure/azure-cli/dev/az.completion -o "$ZSHFOLDER"/azure-cli/az.completion && timestamp "Downloaded the newest version of az plugin for zsh"
|
|
|
|
}
|
|
|
|
function main() {
|
|
command_start update_pip
|
|
command_start install_pyright
|
|
command_start install_bash-language-server
|
|
command_start install_yaml-language-server
|
|
command_start install_ansible-language-server
|
|
command_start install_shfmt
|
|
command_start install_shellcheck
|
|
command_start install_gopls
|
|
command_start install_terraform
|
|
command_start install_terragrunt
|
|
command_start install_azure_cli
|
|
command_start install_black
|
|
command_start install_ansible
|
|
command_start install_meraki_ansible
|
|
command_start update
|
|
}
|
|
|
|
main
|