Add convinient way to install bash completions and create bash script for aliases

This commit is contained in:
2021-11-17 18:55:44 +03:00
parent 2020b787f7
commit c318b5bc42
3 changed files with 75 additions and 42 deletions

View File

@@ -4,6 +4,7 @@ declare -A configs=(
["$PWD/config/.bashrc"]="$HOME/.bashrc"
["$PWD/config/.inputrc"]="$HOME/.inputrc"
["$PWD/config/.gitconfig"]="$HOME/.gitconfig"
["$PWD/config/.tmux.conf"]="$HOME/.tmux.conf"
["$PWD/config/nvim"]="$HOME/.config/nvim"
["$PWD/config/alacritty"]="$HOME/.config/alacritty"
["$PWD/config/rofi"]="$HOME/.config/rofi"
@@ -18,12 +19,15 @@ declare -A configs=(
["$PWD/config/picom.conf"]="$HOME/.config/picom.conf"
)
bashCompletionsDir="$HOME/.config/bash-completions"
usage() {
echo "usage: (./)bootstrap.sh [-S][-R]"
echo
echo " -S installs all this shit"
echo " -R removes all this shit"
echo " -I downloads bash completions"
}
if [ $# -eq 0 ] ; then
@@ -59,4 +63,27 @@ do
rm -rf ${configs[$config]}
done
rm -rf "$bashCompletionsDir"
fi
# complete_alias is a script that allows to use completion in aliases
declare -A bashCompletions=(
["complete_alias"]="https://raw.githubusercontent.com/cykerway/complete-alias/master/complete_alias"
["tmux"]="https://raw.githubusercontent.com/Bash-it/bash-it/master/completion/available/tmux.completion.bash"
["git"]="https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash"
)
# Install bash completions defined in hashmap above
if [ "$1" = "-I" ] ; then
for cmp in "${!bashCompletions[@]}"
do
source=${bashCompletions[$cmp]}
dest="$bashCompletionsDir/$cmp.bash"
if [[ ! -f "$dest" ]] ; then
echo "Downloading $cmp completion"
curl "$source" -o "$dest" &> /dev/null
fi
done
fi

View File

@@ -1,48 +1,6 @@
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
gitCompletionPath="~/.config/gitcompletion.bash"
# Install git completion if needed
if [[ ! -f ~/.config/git-completion.bash ]] ; then
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash > ~/.config/git-completion.bash
fi
source ~/.config/git-completion.bash
# _ _ ___ _ ____ _____ ____
# / \ | | |_ _| / \ / ___|| ____/ ___|
# / _ \ | | | | / _ \ \___ \| _| \___ \
# / ___ \| |___ | | / ___ \ ___) | |___ ___) |
# /_/ \_\_____|___/_/ \_\____/|_____|____/
#
alias sudo='sudo '
alias ls='ls --color=auto'
alias lah='ls -lah'
alias la='ls -a'
alias ed='$EDITOR'
alias c='clear'
alias t='tmux'
alias pacman='pacman --color always'
alias yay='yay --color always'
# Git aliases
alias g='git'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log'
alias gs='git status'
alias gd='git diff'
alias gb='git branch'
alias gt='git tag'
alias gch='git checkout'
# _____ _ ___ _____ ____ ___ _ _ __ __ _____ _ _ _____
# | ____| \ | \ \ / /_ _| _ \ / _ \| \ | | \/ | ____| \ | |_ _|
# | _| | \| |\ \ / / | || |_) | | | | \| | |\/| | _| | \| | | |
@@ -66,6 +24,20 @@ PYTHON_BIN="$HOME/.local/bin"
export PATH="$PATH:$MY_BIN:$PYTHON_BIN:$RUSTBIN:$GOBIN"
completionsDir="$HOME/.config/bash-completions"
# Source bash completions inside bash-completions directory
if [[ -d "$completionsDir" ]] ; then
completions=($completionsDir/*)
for cmp in ${completions[@]}
do
source "$cmp"
done
fi
# Install aliases
source $DOTFILES/config/bash/aliases.bash
# Find arch package by binary
source /usr/share/doc/pkgfile/command-not-found.bash

34
config/bash/aliases.bash Normal file
View File

@@ -0,0 +1,34 @@
#! /bin/bash
declare -A aliases=(
["sudo"]="sudo "
["ls"]="ls --color=auto"
["l"]="ls"
["lah"]="ls -lah"
["la"]="ls -a"
["ll"]="ls -l"
["ed"]="$EDITOR"
["c"]="clear"
["t"]="tmux"
["pacman"]="pacman --color auto"
["yay"]="yay --color auto"
# Git
["g"]="git"
["ga"]="git add"
["gc"]="git commit"
["gp"]="git push"
["gl"]="git log"
["gs"]="git status"
["gd"]="git diff"
["gt"]="git tag"
["gch"]="git checkout"
)
for alias in ${!aliases[@]}
do
cmd=${aliases[$alias]}
alias "$alias"="$cmd"
complete -F _complete_alias "$alias"
done