diff --git a/aliases.sh b/aliases.sh index ff32e96..c11398c 100644 --- a/aliases.sh +++ b/aliases.sh @@ -1,8 +1,13 @@ -# Alias +# Aliases ## Variables de ambiente VENV=.venv +FONT_DIR=$HOME/.fonts +OZSH_ALIAS=$HOME/.oh-my-zsh/custom/aliases.zsh +BASH_ALIAS=$HOME/.bash_aliases +RLOC_ALIAS=$HOME/Repositorios/aliases/aliases.sh +REPO_ALIAS=https://gitlab.com/perrotuerto_personal/codigo/aliases/-/raw/no-masters/aliases.sh ## Eliminación de alias previos @@ -78,7 +83,6 @@ alias rastrear-todo='find / -iname' alias trace-all='rastrear-todo' alias copiar='xclip -selection clipboard <' alias copy='copiar' -alias recargar='source $HOME/.zshrc' alias refresh='recargar' alias install='instalar' alias uninstall='desinstalar' @@ -108,27 +112,36 @@ alias acuario='asciiquarium' alias tren='sl' alias fantasma='oneko &' -## Detecta tipo de distribución +## Funciones + +### Detecta tipo de distribución distro-name () { - DIST_NAME=$(awk -F= '/^NAME/{print $2}' /etc/os-release) - echo $DIST_NAME | sed 's/"//g' + echo $(awk -F= '/^NAME/{print $2}' /etc/os-release) | sed 's/"//g' } -## Actualizador +### Imprime errores + +echo-error () { + echo "ERROR: $1" + return 1 +} + +### Actualizador actualizar () { - DIST=$(distro-name) case $1 in alias | aliases) echo "Actualizando alias" - curl -o $HOME/.oh-my-zsh/custom/aliases.zsh \ - https://gitlab.com/perrotuerto_personal/codigo/aliases/-/raw/no-masters/aliases.sh + curl -o $BASH_ALIAS $REPO_ALIAS + if [ -f "$OZSH_ALIAS" ]; then + cp $BASH_ALIAS $OZSH_ALIAS + fi recargar ;; paquetes | packages) echo "Actualizando paquetes" - if [[ ${DIST} = "Arch Linux" ]]; then + if [[ $(distro-name) = "Arch Linux" ]]; then sudo pacman -Syy sudo pacman -S archlinux-keyring else @@ -137,13 +150,23 @@ actualizar () { ;; todo | sistema | all | system) echo "Actualizando sistema" - if [[ ${DIST} = "Arch Linux" ]]; then + if [[ $(distro-name) = "Arch Linux" ]]; then yay -Su else sudo apt upgrade fi ;; -h | --help | help | ayuda) + actualizar-help ;; + *) + actualizar alias + actualizar paquetes + actualizar sistema + ;; + esac +} + +actualizar-help () { echo "actualizar: utilidad para hacer actualizaciones. Uso: @@ -162,31 +185,22 @@ Ejemplos: actualizar -h actualizar todo actualizar" - ;; - *) - actualizar alias - actualizar paquetes - actualizar sistema - ;; - esac } -## Instalador +### Instalador instalar (){ - DIST=$(distro-name) - if [[ ${DIST} = "Arch Linux" ]]; then + if [[ $(distro-name) = "Arch Linux" ]]; then yay -Syy $@ else sudo apt install $@ fi } -## Desinstalador +### Desinstalador desinstalar (){ - DIST=$(distro-name) - if [[ ${DIST} = "Arch Linux" ]]; then + if [[ $(distro-name) = "Arch Linux" ]]; then yay -Rss $@ else sudo apt purge $@ @@ -195,26 +209,51 @@ desinstalar (){ fi } -## Gestión de alias +### Gestión de alias aliases () { - ALIAS_FILE=~/.oh-my-zsh/custom/aliases.zsh case $1 in + actualizar | update) + actualizar aliases + ;; ver | see) - c $ALIAS_FILE + echo $OZSH_ALIAS + c $OZSH_ALIAS ;; editar | edit) - v $ALIAS_FILE + v $OZSH_ALIAS + ;; + enlazar | link) + if [ -f "$RLOC_ALIAS" ]; then + if [ -f "$OZSH_ALIAS" ]; then + ln -fs $RLOC_ALIAS $OZSH_ALIAS + else + ln -fs $RLOC_ALIAS $BASH_ALIAS + fi + recargar + else + echo-error "no se encontró archivo '$RLOC_ALIAS' para copia." + fi ;; -h | --help | help | ayuda) + aliases-help ;; + *) + alias + ;; + esac +} + +aliases-help () { echo "aliases: utilidad para hacer gestionar alias. Uso: aliases [OPT] Opciones: - ver | see Muestra contenido de archivo de alias. - editar | edit Edita alias. + actualizar | update Actualiza aliases. + ver | see Muestra contenido de archivo de aliases. + editar | edit Edita aliases. + enlazar | link Genera enlace simbólico entre repo 'aliases' y archivo de aliases. -h | --help | help | ayuda Despliega esta ayuda. vacío Uso regular de 'alias'. @@ -223,36 +262,21 @@ Ejemplos: aliases editar aliases -h aliases" - ;; - *) - alias - ;; - esac } -### Un árbol que es a tree lo que lsd es a ls +### Recarga aliases -tre () { - DEPTH=1000 - DIR="." - if [ -d "${@:$#}" ]; then - DIR="${@:$#}" +recargar () { + if [ -f "$OZSH_ALIAS" ]; then + source $HOME/.zshrc + else + source $HOME/.bashrc fi - while getopts ":L:" opt; do - case $opt in - L) DEPTH=$OPTARG - ;; - \?) echo "Opción inválida -$OPTARG" >&2 - ;; - esac - done - lsd -l --tree --size=short --blocks=size,name --depth=$DEPTH $DIR } ## Instalador de fuentes font-add () { - FONT_DIR=$HOME/.fonts if [ ! -d "$FONT_DIR" ]; then mkdir $FONT_DIR fi @@ -287,8 +311,12 @@ md () { leer | read | ver | cat | c) glow -w 80 -p $2 ;; -h | --help | help | ayuda) - echo " -md: utilidad para hacer gestionar archivos Markdown. + md-help ;; + esac +} + +md-help () { + echo "md: utilidad para hacer gestionar archivos Markdown. Uso: md [OPT] @@ -302,49 +330,52 @@ Opciones: Ejemplos: md formatear archivo.md md convertir archivo.md a archivo.html - md ayuda -" ;; - esac + md ayuda" } ## Desactiva o activa virtualenv -check_venv () { - VENV_ACT=$VENV/bin/activate +check-venv () { type deactivate &>/dev/null && deactivate - if [ -f "$VENV_ACT" ]; then - source $VENV_ACT + if [ -f "$VENV/bin/activate" ]; then + source $VENV/bin/activate fi } -check_venv # Ejecuta cuando se carga +check-venv # Ejecuta cuando se carga ## Agrega y arranca virtualenv venv () { virtualenv $VENV - check_venv + check-venv } ## Modifica comportamiento de cd cd () { builtin cd $1 - check_venv + check-venv } ## Embellece y verifica código pymp () { - FORMAT=false - CHECK=true case $1 in -f | formatear | format) black --line-length 80 ${@:$#} ;; -h | --help | help | ayuda) - CHECK=false - echo " -pymp: utilidad para enchular código de Python. + pymp-help ;; + esac + if [ ! -d "${@:$#}" ] && [ ! -f "${@:$#}" ]; then + echo-error "último argumento debe ser un fichero existente." + fi + flake8 --max-line-length 80 ${@:$#} + vulture ${@:$#} +} + +pymp-help () { + echo "pymp: utilidad para enchular código de Python. Uso: pymp [OPT] [FILE|DIR] @@ -356,15 +387,6 @@ Opciones: Ejemplos: pymp archivo.py pymp formatear . - pymp ayuda -" ;; - esac - if [ ! -d "${@:$#}" ] && [ ! -f "${@:$#}" ]; then - echo "ERROR: último argumento debe ser un fichero, ¿lo escribiste correctamente?" - return 1 - fi - if [ "$CHECK" = true ]; then - flake8 --max-line-length 80 ${@:$#} - vulture ${@:$#} - fi + pymp ayuda" + return 0 }